Agradecimientos Por su dedicación y enseñanza en lo que es la vida y con su ejemplo me dicto por donde ir y que hacer. AMI MAMA. Por sus enseñanzas, por su tesón y por el esmero con que realiza cada una de sus actividades diarias en lo familiar y en lo laboral y además por la ocupación que les otorga a nuestros hijos. AMI ESPOSA FLIPER. No tengo palabras como expresarte mi más profunda admiración y agradecimiento por lo mucho que me has dado y comprendido. Por sus mas altos niveles de comprensión, por el tiempo que no he estado con ustedes y por su esmera dedicación en cada una de sus actividades cotidianas, además de que me enseñan como ser mejor en la vida. A MIS HIJOS (Jocelyn y Ricardo) Por sus enseñanzas, por sus dedicaciones y por su esmero en su docencia y en el proyecto y además por que si él no se hubiera completado mi grado. A MI DIRECTOR DE TESIS (M. en C. Eduardo Rene Rodríguez Ávila). Por sus actitudes, por sus comportamientos, por sus ideas y por sus pensamientos hacen que me llene de energía todos y cada uno de los días en mi profesión de docente A MIS ALUMNOS. Lo más importante en la vida es hacer el intento. Ricardo Pérez Calderón
Text of Agradecimientos - Instituto Politécnico Nacional
Microsoft Word - 120109.docAgradecimientos
Por su dedicación y enseñanza en lo que es la vida y con su ejemplo
me dicto por donde ir y que hacer. AMI MAMA.
Por sus enseñanzas, por su tesón y por el esmero con que realiza
cada una de sus actividades diarias en lo familiar y en lo laboral
y además por la ocupación que les otorga a nuestros hijos. AMI
ESPOSA FLIPER. No tengo palabras como expresarte mi más profunda
admiración y agradecimiento por lo mucho que me has dado y
comprendido.
Por sus mas altos niveles de comprensión, por el tiempo que no he
estado con ustedes y por su esmera dedicación en cada una de sus
actividades cotidianas, además de que me enseñan como ser mejor en
la vida. A MIS HIJOS (Jocelyn y Ricardo)
Por sus enseñanzas, por sus dedicaciones y por su esmero en su
docencia y en el proyecto y además por que si él no se hubiera
completado mi grado. A MI DIRECTOR DE TESIS (M. en C. Eduardo Rene
Rodríguez Ávila).
Por sus actitudes, por sus comportamientos, por sus ideas y por sus
pensamientos hacen que me llene de energía todos y cada uno de los
días en mi profesión de docente A MIS ALUMNOS.
Lo más importante en la vida es hacer el intento. Ricardo Pérez
Calderón
Resumen El siguiente trabajo plantea la necesidad de reducir el
tiempo en aprender a
programar por parte de los alumnos de una carera en informática o
afín, con el
apoyo de una herramienta y técnica propuesta. La Técnica propuesta
se basa en el
desarrollo de algoritmos bajo el enfoque de pseudocódigo y qué con
ellos se pueda
generar las conversiones a los diferentes lenguajes de programación
propuestos,
derivado de los 4 grandes paradigmas que existen en la
programación.
Hoy en día existen una gran variedad de lenguajes de programación
para una
infinidad de aplicaciones a nivel mundial, pero lo importante no es
el lenguaje como
tal, para el planteamiento de este proyecto, si no, es la manera en
como se
desarrollo un programa a partir de un algoritmo para la solución de
un problema en
particular, por lo tanto, si al alumno se le enseñara una de forma
de desarrollar
algoritmos para la solución de problemas, será más fácil llevar esa
situación a algún
lenguaje de programación en particular y si esa forma de desarrollo
de los algoritmos
se pudieran capturar, para almacenarse y después mejorarse, seria
de gran impacto
y avance en su proceso de lógica de programación para el alumno,
esa es la
herramienta propuesta.
Abstract The following work exponed the need to reduce the time in
learning to
programmming by part of the students of computing Engineer or
affine, with the
support of a tool and technical proposal. The Technical proposal
base in the
development of algorithms under the approach of pseudocódigo and
what with them
can generate the conversions to the different lenguajes of
programming proposed,
derived of the 4 big paradigms that exist in the programming.
In the actuality exist a big variety of lenguajes of programming
for an infinity of
applications to world-wide level, but the important is not the
lenguaje like such, for
the planteamiento of this project, if no, is the way in as I
develop a program from an
algorithm for the solution of a problem in particular, Therefore,
if to the student
taught him an of form to develop algorithms for the solution of
problems, will be
easier to carry this situation to some lenguaje of programming in
particular, and if this
form of development of the algorithms could capture, to store and
afterwards
improve, serious of big impact and advance in his process of logic
of programming
for the student, that is the tool proposed.
Introducción La enseñanza es una actividad básica del ser humano.
Es la forma como nuestra cultura ha perpetuado y transmitido su
conocimiento, tan vasto que ningún ser humano sólo puede
asimilarlo. El ser humano debe especializarse en un tema y sobre
éste aprender para dedicarse posteriormente a una actividad
profesional. Una de estas actividades es la programación de
computadoras, cuya enseñanza o aprendizaje puede no resultar
sencillo. A este respecto se presenta en este trabajo una propuesta
sobre su enseñanza reforzada con el uso de una herramienta. La
disciplina de la enseñanza tiene una infinidad de líneas de
investigación y no se diga de las relacionadas al ámbito académico
y técnico. En este trabajo se plantea cómo desarrollar algoritmos a
través de una metodología para que pueda desembocarse en la
creación de un programa en uno de cuatro posibles paradigmas de
programación. Es importante mencionar que la programación, al ser
una actividad netamente profesional y compleja, es necesario
estrategias didácticas para facilitarla e implementarla.
Justificación. Se ha detectado que los estudiantes de una carrera
en informática o afines tienen problemas cuando empiezan a
programar; dificultad que puede extenderse a lo largo de sus
estudios. Muchas veces estos tropiezos son de mucha tensión para el
alumno. Por lo tanto, la reducción del tiempo de aprendizaje es
fundamental para ayudar al estudiante en el aprovechamiento de
todas aquellas materias que requieren de una habilidad de
programación o, en su defecto, que necesiten más tiempo para
desarrollar otras actividades académicas. Objetivo La enseñanza de
la programación es una actividad compleja y difícil con una
infinita gama de tópicos para estudiarse y desarrollarse como
líneas de investigación. Este trabajo plantea observar la
problemática al momento de desarrollar algoritmos y proponer una
solución estratégica didáctica. Por lo tanto, un objetivo es
proporcionar una herramienta para apoyar la enseñanza de lenguajes
de programación, el desarrollo de algoritmos y la elaboración de
programas.
Hipótesis.
Se plantea la siguiente hipótesis:
“La reducción del tiempo de aprendizaje y desarrollo de habilidades
en la programación de computadoras, está relacionada positivamente
con el uso de una metodología de diseño de algoritmos y más si está
soportada con una herramienta automatizada para tal efecto.”
Organización de la tesis. La estructura de este trabajo consiste de
5 capítulos, un anexo de informacion, un anexo de graficas y la
bibliografía respectiva. El capítulo I da un panorama de los
lenguajes introductores a la actividad de la programación de
computadoras, así como las herramientas que existen en el medio y
la evolución de los lenguajes de programación. El capítulo II
describe el problema planteado a través de los modelos de la
enseñanza, los factores que intervienen en el aprendizaje, el rol
del docente, y los principios pedagógicos de los profesores en las
aulas. El capítulo III describe los lenguajes que fueron
seleccionados para la construcción de la herramienta, esquematiza
ejemplos de las gramáticas de algunos de ellos y da ejemplos de los
códigos convertidos partiendo de un algoritmo. En el capítulo IV se
describe cómo se llevó a cabo la solución para la investigación: a
través de una metodología de diseño de algoritmos y ejemplos desde
los más básicos hasta algunos complejos, además de cómo se formaron
los grupos tanto el de control como el experimental. En el capítulo
V se hace entrega de los resultados obtenidos de la investigación,
a través de graficas y formas tabulares de los conceptos que se
plantearon. Por último se dan las conclusiones y recomendaciones
para la continuación de esta investigación o de futuros
proyectos.
INDICE Página Capitulo I. La programación de computadoras 1.1 Breve
Historia 3 1.2 Paradigmas de los lenguajes de programación 3 1.3 La
enseñanza de la programación 4 1.4 Herramientas de enseñanza 5 1.5
Experiencias de la enseñanza de la programación 6 Capitulo II. El
aprendizaje y la enseñanza 2.1 Teorías sobre el aprendizaje y
modelos de enseñanza 8 2.2 Factores que intervienen en el
aprendizaje 11 2.3 Paradigma actual de la enseñanza y formación 12
2.4 La enseñanza más importante en el aprendizaje 13 Capitulo III.
La herramienta propuesta 3.1 Construcción del sistema 16 3.2
Descripción del funcionamiento de la aplicación 23 3.2.1 Códigos
convertidos 30 3.2.2 Pseudocódigo 33 3.2.3 Instalación de la
Aplicación 37 Capitulo IV. Formulación de algoritmos 4.1 La
necesidad de una Metodología para la formulación de algoritmos 41
4.2 Validación de campo de la herramienta presentada y técnica
descrita 44
Capitulo V. Taller de lógica de programación 5.1 La importancia de
un TLP 45 5.1.1 Grupo de control 46 5.1.2 Grupo Experimental 47 5.2
Graficas 49
Conclusiones y Recomendación 51
Anexos de tablas 53 Enfoques del conocimiento 53 Comparativo
Universidades Publicas y Universidades politécnicas 54 Comparativa
estilos del aprendizaje 55 Calificaciones de los grupos 56
Resultados del Ceneval 60 Formación de Grupos 63
Cuestionario 65 Graficas 67
Capítulo I La Programación de Computadoras
1.1 Breve historia de la programación. Los lenguajes de
programación han sufrido una transformación sustancial desde sus
inicios. Si bien en las primeras computadoras era necesario
cablearlas para su programación, en nuestros días no hay más que
sólo tener una PC para experimentar sobre su programación. Tras su
evolución, hoy en día podemos identificar varias generaciones de
lenguajes de programación. Lenguajes de 1ra. Generación.- Bajo esta
clasificación se engloban todos aquéllos códigos de programación
conocidos como lenguajes máquina ó códigos máquina. Lenguajes de
2da. Generación.- Esta generación fue impulsada por los estudios
del matemático húngaro John Von Neumann sobre el concepto del
programa almacenado en memoria, se desarrollaron los primeros
lenguajes ensambladores simbólicos, junto con algunos otros que hoy
se catalogan como de nivel medio. Lenguajes de 3ra. Generación.-
Son todos aquellos lenguajes que parten de una gramática y poseen
una sintaxis propia de un lenguaje libre de contexto. Aquí caen la
mayoría de los lenguajes de programación que existen actualmente.
Lenguajes de 4ta. Generación.- Lenguajes principalmente orientados
al usuario final que parten de un modelo declarativo, en el que lo
que importa es la expresión de problema y la solución esperada más
no la forma en que ésta se obtenga. El diseño e implementación de
los lenguajes de programación al igual que las computadoras también
han ido evolucionando de una manera continua y metódica desde que
aparecieron en la década de los cincuenta. 1.2 Paradigmas de los
lenguajes de programación
Un paradigma es una forma de organización en donde los elementos se
estructuran en sentido lógico, es decir, se trata de un modelo o
patrón a seguir. Los lenguajes de programación pueden clasificarse
por el paradigma con el que se implementó, cada uno completamente
diferente en su concepción. A continuación se describen los cuatro
más representativos.
Paradigma Imperativo.
En el modelo de programación imperativa se utilizan las diferentes
estructuras de control y estructuras de datos predefinidas por el
propio lenguaje o las definidas por el propio desarrollador; en
este contexto el usuario define variables, constantes, funciones,
procedimientos, entre otras. El programa se comporta como una
máquina abstracta. En términos coloquiales se le indica al programa
qué instrucción se debe ejecutar primero y hasta que termine esa
instrucción no se inicia la siguiente y así sucesivamente hasta el
final del programa. Un ejemplo muy claro de este tipo programación
es el lenguaje Pascal.
- 3 -
Paradigma Funcional.
En la programación funcional todo gira entorno a la definición de
funciones y en la aplicación de esas funciones. En términos
coloquiales se le indica al programa ejecutar una función
predefinida, con o sin parámetros, y hasta que se tengan resueltos
todos los parámetros, se ejecuta la función.
Paradigma Basado en reglas.
Los modelos basados en reglas, como la programación lógica,
expresan un problema a través con un conjunto de relaciones,
hechos, y aquello que rige en su establecimiento o funcionamiento.
Muchos de los lenguajes de programación que recurren a este modelo
deben implementar algunos mecanismos adicionales para que funcione
adecuadamente, como la capacidad de recorrer varias posibilidades y
regresar sobre los pasos tomados para explorar otros si los
primeros resultan infructuosos, un concepto conocido como rollback
o backtracking.
Paradigma Orientado a Objetos.
La programación Orientada a objetos (POO) parte de la concepción de
conceptos más sofisticados en comparación a los paradigmas
anteriores. Considera entidades participantes en un problema como
objetos, las relaciones entre éstos (herencia, polimorfismo,
encapsulamiento) y su comportamiento.
1.3 La enseñanza de la programación. La enseñanza de la
programación presenta sus propias dificultades y complejidades. Sin
embargo actualmente los tres lenguajes más representativos e
importantes para la enseñanza de la programación son Pascal, Scheme
y Basic.
Pascal.
Pascal fue desarrollado en 1968 por Niklaus Wirth en Zurich, como
una evolución del lenguaje ALGOL 60. Su nombre es en honor del
matemático francés Blaise Pascal. Este lenguaje fue el primero en
incorporar los conceptos de la programación estructurada y es un
referente contundente al aprender a programar. Este lenguaje es
totalmente representativo del paradigma imperativo y de los
lenguajes de nivel alto.
Scheme.
Scheme fue desarrollado por Guy Lewis Steele Jr. y Gerald Jay
Sussman, siendo derivado del lenguaje LISP, que fue el primero en
incorporar el cálculo lambda. Enfatiza la recursividad y el paso de
argumentos a través del manejo de funciones.
Basic.
- 4 -
El “Begginers All-Purpose Symbolic Instruction Code”, o BASIC, por
sus siglas en inglés, es un lenguaje de programación desarrollado
por los profesores Thomas Kurtz y John Kemeny, del Dartmouth
Collage, en 1964. Tuvo mucho auge pero su popularidad fue
disminuyendo a medida que las actividades de programación se
volvían más complejas y sofisticadas. No por ello ha dejado de ser
un lenguaje muy poderoso para iniciar a los alumnos en el área de
la programación.
1.4 Herramientas de enseñanza. La educación exige la necesidad de
crear diversos tipos de estrategias y recursos para que realmente
ofrezca posibilidades de desarrollo a todos los alumnos y no sólo a
unos cuantos. Una vez que los alumnos sean más competentes, su
entorno (profesores incluidos) se volverán más exigentes de igual
manera. El software educativo es una herramienta capaz de
transformar positivamente los procesos de enseñanza-aprendizaje,
aportando novedosos caminos en su desarrollo.
E-learning.
E-learning es un método didáctico para masificar la educación y
romper las barreras geográficas. La Internet ha impulsado la
educación enormemente a través de esta técnica, aunque es
importante reconocer que diferentes medios tecnológicos a través
del tiempo han impulsado este concepto. Existen varios organismos
que usan este concepto, como el ADL (Advanced Distributed Learning)
que ha impulsado el SCORM (Shareable Content Object Reference
Model) como un estándar para la educación a distancia.
Desarrollar cursos para esta modalidad es caro por la
infraestructura tecnológica que hay atrás de ellos pero una vez
terminado y puesto en marcha su utilización tienen una recuperación
de la inversión inicial acelerada. Existe también software libre
con el que se puede elaborar y publicar cursos en línea y que son
una alternativa considerable para disminuir costos.
CD y DVD Interactivos.
A través del uso de diversos medios (audio, video, animaciones,
hipervínculos, textos, fotos, imágenes), adecuada y fácilmente
presentados y distribuidos en discos compactos con formato CD o DVD
puede auxiliarse al alumno con material de referencia o sobre el
que totalmente puede apoyarse en el aprendizaje de algún tema. Su
bajo costo los hace un medio muy atractivo.
Tutoriales.
Los tutoriales son aplicaciones que buscan aumentar el aprendizaje
significativo de los alumnos a través de una presentación dirigida
con teoría y práctica. Pueden ser presentados en formato CD/DVD, en
forma de un curso a distancia o como material impreso.
- 5 -
1.5 Experiencias de la enseñanza de la programación de
computadoras.
Existen diversos mecanismos y metodologías para enseñar a programar
y que van desde lo más simple y particular hasta lo más
sofisticado. A continuación daremos algunos ejemplos de
éstos.
La Universidad de Sevilla, a través de su departamento de Lenguajes
y Sistemas Informáticos, cuenta con varias asignaturas que
comprenden su metodología didáctica en la enseñanza de la
programación. Este departamento considera que uno de los aspectos
más importantes, además del cómo se le haga llegar todo tipo de
información, es la forma en la que se motiva al alumno, para
ayudarle y que se le facilite la programación (03).
Gerald Jay Sussman y Jack Wisdom, comentan que se reconoce que un
estudiante puede saber la teoría y que también puede tener
problemas para la aplicación de ésta. Cuando el estudiante no tiene
un procedimiento formal para aprender la técnica de resolución de
un problema le costará trabajo aplicar los conceptos que ya conoce.
Los autores comentan que expresar una metodología de enseñanza como
un lenguaje de programación obliga a que ésta no sea ambigua y sea
altamente efectiva. La tarea de formular un método como un programa
y depurar el programa es un ejercicio poderoso en el aprendizaje.
(04)
En el trabajo de Mario Oviedo Galdeano se analizan los problemas
más comunes en la enseñanza de la programación (desde la visión del
autor) y que se consideran más importantes para el logro del
objetivo de la asignatura (y que de alguna manera son los mismos
que para este estudio se han detectado con el paso del tiempo). El
autor comenta que la programación, al ser una actividad mental
compleja y creativa, requiere de 4 características: inteligencia,
conocimiento, habilidades y disciplina, las cuales se adquieren con
el paso del tiempo. También el autor sugiere una estrategia para
tal efecto y la divide en lenguajes de programación y herramientas
de desarrollo que, con ayuda de conceptos de técnicas de
programación, lo llevarían a la enseñanza de la programación en sí
misma. Puede considerarse hacer un examen diagnóstico en el cual se
observará el nivel de madurez del grupo y se podrá generar la
estrategia didáctica más efectiva para el logro del objetivo.
(05)
En el trabajo de Norma Moroni con el uso del método global, recalca
que las letras sólo se pueden comprender en el contexto de sus
palabras y las palabras solamente se pueden comprender en el
contexto de sus frases. Para el aprendizaje de un lenguaje de
programación, ahorra tiempo y esfuerzos por lo que se creó un
ambiente de aprendizaje con un editor interactivo de algoritmos, un
constructor automático de trazas y un traductor de algoritmos a
programas en lenguaje Pascal, en este trabajo se presentan los
resultados obtenidos en una experiencia de campo diseñada para
comprobar la efectividad de la aplicación (1)
Existe un trabajo de simulación sobre pedagogía que sin duda es
parecido al aquí presentado, de Arnoldo Oronico, que tiene como
titulo “Una robótica pedagógica”. En el que se busca facilitar la
manera en que se aborda el tema de la robótica a través de un
software de simulación que genere el aprendizaje significativo y
con ello lo lleve estrechamente a la realidad. (07)
- 6 -
Mediante el aprendizaje en grupo lo que hace es que los alumnos al
mismo tiempo diseñen un programa y compartan responsabilidades,
fracasos, frustraciones, y éxitos. Esta técnica, derivada de la
falta de computadoras en las escuelas, es popular en el ámbito
empresarial, lo que llevó a mejoras significativas tanto en calidad
como en cantidad en el aprendizaje de la programación. Con el
desarrollo de este concepto y con el uso de la Internet se está
depurando el concepto de tal manera que en forma remota no solo es
posible la participación de dos alumnos sino los que fuesen
necesarios para la colaboración de un proyecto. El método se llama
DOMOSIN-TPC (06)
La complejidad de los programas que se desarrollan actualmente
produce la necesidad de iniciar a los alumnos en un camino que los
conduzca a utilizar efectivas técnicas de programación. Es
importante para ello poner énfasis en el diseño previo. Como se ha
comprobado, una estrategia trascendental es comenzar a enseñar
programación utilizando los algoritmos como recursos esquemáticos
para plasmar el modelo de la resolución de un problema. Esto genera
una primera etapa de la programación que resulta un tanto tediosa
para los alumnos que están necesitados de aplicar los conceptos en
una computadora. Si bien no aparecen dificultades graves con el
aprendizaje de esta técnica, se puede comprobar que no resulta una
tarea trivial obtener un algoritmo semánticamente correcto. El
hecho de reescribir los algoritmos hasta ponerlos a punto es
operativamente complicado cuando se trabaja con lápiz y papel.
Además, comprobar la corrección del algoritmo presenta
inconvenientes importantes. Es difícil, mental o gráficamente,
representar las acciones del algoritmo en ejecución de manera
totalmente objetiva, sin dejarse llevar por la subjetividad
(01).
Estos son los trabajos que se han realizado para el desarrollo y
mejoramiento de la enseñanza de la programación. El presente
trabajo reforzará y tomará experiencias de ellos para cumplir el
objetivo de la investigación y ratificar o desechar la hipótesis de
la investigación.
- 7 -
Capítulo II El Aprendizaje y la Enseñanza
2.1 Teorías sobre el aprendizaje y modelos de enseñanza. A la forma
en la que el ser humano transmite su cultura y conocimientos a las
nuevas generaciones es lo que denominamos enseñanza. El grupo de
técnicas y conocimiento (prácticos como teóricos) en torno a la
forma en la que esto se hace y por parte de quien, y a quienes
denominamos maestros o docentes, es lo que se identifica como un
modelo de enseñanza. A lo largo del tiempo, diversos modelos de
enseñanza han sido elaborados, donde la función docente brinda
soporte a la ideología detrás del aprendizaje o donde una escuela
de pensamiento es el soporte de la experiencia didáctica.
Brevemente describiremos algunos de los modelo más
relevantes.
El modelo constructivista.
El constructivismo supone la construcción que se realiza a través
de un proceso mental y que finaliza con la adquisición de un
conocimiento nuevo. En sus diferentes fases, sirve para ayudar al
alumno a la asimilación del conocimiento. Podemos entender que los
conocimientos previos que los alumnos posean serán claves para la
construcción de este nuevo conocimiento. Básicamente, puede decirse
que el constructivismo es el modelo que mantiene una persona, tanto
en los aspectos cognitivos, sociales y afectivos del
comportamiento, que se va produciendo día con día.
El modelo conductista.
También llamado mecanicista, el modelo conductista significa un
aprendizaje que se da por repetición. Considera al ser humano como
un ente que percibe información y luego la transforma para dar
resultado o sentido a su vida y toma en cuenta las relaciones de
causa-efecto. Bajo este paradigma el alumno aprende por ensayo y
error. Uno de los mayores impulsores de este paradigma fue Skinner;
él afirmaba que las repuestas estaban condicionadas a refuerzos y
que estos podían ser negativos o positivos; de aquí se afirma que
el conocimiento es conductista.
El modelo cognitivo.
El objetivo del modelo cognitivo es enseñar a pensar al alumno, a
que valore el significado mismo del conocimiento y que valore el
proceso del aprendizaje de tal forma que se le vaya formando un
carácter firme e independiente. Se basa en promover el
procesamiento mental. El aprendizaje se da cuando existe un estado
de conocimiento ad hoc mas que a los cambios de los estímulos para
la respuesta. En otras palabras, es la actividad mental que implica
un análisis interno y su estructuración para la asimilación del
conocimiento derivado del procesamiento de información
recibida.
- 8 -
Teoría Gestalt.
La Gestalt es una teoría sobre mente y cerebro que propone una
visión holística en la que el resultado es mayor que la suma de las
partes involucradas. Es una visión sobre un proceso en el que a
través de la percepción, el pensamiento y la estructuración de la
experiencia acumulada se pasa a un nivel mayor de conciencia. Es
decir, en este paradigma se le da importancia a la forma en el que
el sujeto estructura o ve la situación problemática y a la acción
correcta que se ejecuta sobre esa estructura. (15).
Teoría de Tolman sobre el aprendizaje.
Edward C. Tolman, concebía al aprendizaje como el desarrollo de
pedazos de conocimientos y percepciones del entorno en el que un
organismo se desenvuelve y que eventualmente conduce a un
aprendizaje latente ante la ausencia de recompensas. Aunque se
considera que sus ideas marcaron e influenciaron la psicología de
su tiempo ha habido otros trabajos e ideas que explican sus
hallazgos bajo otros puntos de vista. Sin embargo la importancia de
sus trabajos le valieron el reconocimiento bajo una teoría que
lleva su nombre.
Modelo educativo basado en competencias (EBC).
La educación basada en competencias es un proceso complejo, que
atiende a las necesidades del entorno social y laboral de la región
en donde se practica. Parte de la preparación que un individuo
requiere para estar en condiciones de aprovechar y utilizar las
diversas oportunidades que se le presenten.
Nos encontramos en la Era de la Información y la educación es un
pilar en el entorno de desarrollo de un país. El aprendizaje está
determinado por una serie de características que deben estar
inmersas en los alumnos, sus actitudes, aptitudes, valores, la
forma en que reciben asesoria y tutoría, todo esto hace que se
produzca un aprendizaje significativo y hacen ver al alumno como el
agente propulsor de su conocimiento. No es suficiente adoptar una
teoría de aprendizaje en particular. En la práctica resulta mucho
más benéfico que, con base en la experiencia del profesor y
habilidades de los alumnos, se extraigan las mejores prácticas y
técnicas de las distintas escuelas y teorías para buscar la mejor
experiencia en la transmisión del conocimiento.
2.2 Factores que Intervienen en el aprendizaje. Podría considerarse
que todo profesor desea que sus clases sean dinámicas y no pasivas
o aburridas. Muchas veces, por más que se esfuerce el docente esto
parecerá imposible; es muy importante que el docente motive al
alumno con ideas y argumentos para adoptar técnicas que le
faciliten su aprendizaje. Debemos considerar que la estrategia del
docente debe estar íntimamente ligada con las características de la
personalidad del ser humano a través de la cual resaltan una serie
de factores y elementos:
- 9 -
Factores cognitivos. El aprendizaje se da de acuerdo con
determinados procesos mentales y cerebrales, como son: la capacidad
de concentración, la memoria, la actitud, la motivación, la
voluntad, y las habilidades cognitivas propias de cada persona. Sin
embargo, también hay elementos del entorno que tienen una enorme
influencia en el proceso. Factores afectivo-sociales. Los factores
afectivo-sociales (las relaciones interpersonales y la
comunicación) son determinantes para el éxito en el rendimiento
escolar universitario. Un desarrollo emocional le permite al alumno
compartir con otras personas y autoridades conocimiento adicional y
de sustento para su aprovechamiento. Factores ambientales y
organización para el estudio. Los factores ambientales y de
organización son aquellos elementos externos del medio ambiente que
inciden favorablemente o no en la calidad del estudio en el alumno
y como puede ser la organización para el estudio entre otros. La
organización para el estudio es la disposición ordenada de los
elementos que componen el acto de estudiar, de los cuales se
desprenden tres lugar, mente y tiempo. El Cerebro. El cerebro
humano es una maravilla del universo. Es a través del cual los
individuos aprenden y se comunican entre si. En la mayoría de las
personas el lado izquierdo se ocupa de la lógica, el lenguaje, el
razonamiento, los números, el análisis; son las actividades que se
denominan científicas. Mientras que el lado derecho se ocupa del
ritmo, la música, las imágenes, la imaginación, los colores, el
reconocimiento de los rostros, los modelos de Ingeniería o
arquitectónicos, los mapas, que son las actividades artísticas.
Estilo de aprendizaje. El estilo de aprendizaje del alumno se
refiere al hecho de que cuando se necesita aprender algo cada uno
utiliza su propio método o conjunto de estrategias para hacerlo. El
estilo de aprendizaje está directamente relacionado con las
estrategias que se utilizan para aprender algo. Estas estrategias
se pueden agrupar en tres grandes sistemas para representar
mentalmente la información, el sistema de representación visual, el
auditivo y el kinestésico. Derivado de esto, nuestro proyecto se
enfoca en estos sistemas de representación mental, aquí es donde el
alumno con apoyo de la herramienta automatizada y de una captura se
le da sentido a las palabras reservadas que se utilizan para la
formulación de algoritmos a través de una estructura y una
metodología determinadas.
2.3 Paradigma actual de la enseñanza y formación.
La docencia es un conjunto de prácticas que se hace a través de los
años. Los tiempos actuales exigen estrategias nuevas de enseñanza y
no de tiempo atrás. La mayoría de las universidades se basan en una
enseñanza tradicional, en la que el que dictamina casi siempre las
reglas del aula es el docente y alrededor de quien gira la
educación. Cuando el docente tiene experiencia, vocación y
personalidad puede hacer que sea él quien dictamine todas y cada
una de las cuestiones de clase. Existe el riesgo de que a través de
una figura docente dominante se llegue a provocar el conformismo y
dependencia del profesor.
- 10 -
A través del tiempo el docente ha tenido una multitud de roles
(transmisor del conocimiento, facilitador, guía del aprendizaje,
etcétera), muchas veces dependientes de un modelo educativo. Otras
tantas la práctica del docente está envuelta por lo que gira
alrededor de él, su experiencia profesional, su estabilidad
emocional, su capacidad de interrelación con los otros docentes,
sus metas logradas hasta ese momento, etcétera.
Es difícil precisar las características que un buen docente debe
tener para lograr el objetivo de su asignatura. Es necesario que el
profesor pueda tener el conocimiento mínimo necesario para que
pueda identificar a todos y cada uno de sus alumnos para ayudarlos
a tener un buen aprendizaje. Nuestra propuesta es facilitarle al
alumno el aprendizaje de la difícil actividad de programar
utilizando una herramienta automatizada para ayudarles a entender
los principios de la programación de computadoras. 2.4 La enseñanza
más importante en el aprendizaje. La tendencia de los modelos de la
enseñanza es que los alumnos tengan un aprendizaje significativo,
que modifique su conducta, comportamiento y desasiendo aquello que
no les deje una huella. Es importante comentar que como
consecuencia de estos factores y dependiendo del estilo de
aprendizaje de los alumnos, la estrategia didáctica que se presenta
en este trabajo busca presentar la enseñanza de la programación
mediante el uso de una herramienta automatizada apoyándose de una
técnica en el diseño de algoritmos.
Con el paso del tiempo se ha observado que los estudiantes tienen
serios problemas al momento de elaborar programas, por diversas
causas. El estilo de aprendizaje de cada alumno tiene que ver con
aspectos internos de su personalidad, por un lado, y con la técnica
que se aplica en el aula, por el otro.
La siguiente grafica esquematiza varias estrategias didácticas. En
ella se observa la tasa de retención por la técnica
seleccionada.
Grafica de NTL Institute for Applied behavioral sciences (14)
- 11 -
La grafica anterior nos permitirá darnos cuenta que el generar una
nueva estrategia educativa ayudará al alumno no solo en la área de
programación sino en cualquier ámbito de la carrera. La línea de
investigación propuesta la ubicamos en el nivel C, que está
sustentada en prácticas, ejercicios y problemas que es precisamente
el segundo nivel de aprendizaje significativo con un porcentaje
elevado del 75%.
Aprender a pensar. Enseñar a pensar al estudiante no es
precisamente el objetivo central de este estudio. Lo que se
pretende es una búsqueda por el desarrollo de las habilidades para
mejorar la capacidad de razonamiento en la resolución de problemas.
A una mayor práctica un mayor aprendizaje, mas rápido se realizarán
las actividades y mejor se desarrollarán las tareas en sus entornos
tanto laborales, sociales y familiares. Por eso es importante darle
un apartado a esta investigación, la cual se realiza a través de
ensayo y practica bajo el concepto de los talleres de razonamiento
lógica propuestos por Marcel Giry (17). De acuerdo con Piaget, los
individuos pasan por dos fases en las cuales se tiene un periodo de
asimilación y un periodo de adaptación que hace que el conocimiento
se vaya dando en los educandos. Partiendo de esta idea, los
talleres de razonamiento lógico (TRL) de Marcel Giry (17), apuntan
a conducir al alumno hacia la utilización del proceso de
asimilación y adaptación del conocimiento a través de varias fases:
un examen inicial, desarrollo de ejercicios de inteligencia
progresiva y el mismo examen del inicio pero ahora en la fase
final. Para el presente proyecto se ha planteado lo mismo que para
Marcel en sus 3 fases, sustentándolo en una serie de operaciones.
Operaciones Intelectuales. Estas operaciones buscan que el alumno,
pase de un estado de inteligencia progresiva a un estado interno de
abstracción para un pensamiento hipotético y deductivo. Operación
combinatoria. Consiste en enumerar sistemáticamente todas las
combinaciones entre cierta cantidad de objetos sin olvidar y sin
repetir ninguna. Por ejemplo la realización de un algoritmo que
obtenga una tabla de multiplicar, usando las diferentes estructuras
de control y los diferentes tipos de datos
- Usar While - Usar For - Usar Do While - Usar Si Entonces - Usar
un dato entero - Usar un dato real - Usar un dato carácter
Operación de clasificación. Consiste en agrupar a partir de
semejanzas. Ejemplo: elaborar un algoritmo que obtenga un promedio
de 5 asignaturas para 10 alumnos.
- 12 -
Operación de seriación. Acomodar elementos en función de su
diferencia como por ejemplo en orden creciente por tamaño, color,
altura, edad, entre otros. Operación transitividad generalizada.
Proceso de generalizar la seriación. Se trata de ordenar una serie
de elementos utilizando un método sistemático. Operación de árbol
genealógico. Es un proceso igual que la operación de seriación o
transitividad pero más compleja y que consiste en agrupar
relaciones. Operación de inclusión. Consiste en situar cada
elemento en un conjunto y en determinar si esos elementos están
incluidos en un conjunto más amplio. Estos talleres refuerzan lo
que se aprende en el aula, debido a que se práctica. Al pensar en
los TRL, nos hemos dado a la tarea de que, en la búsqueda de la
validación de la hipótesis, ambos grupos tanto el experimental como
el de control, tendrán estas mismas fases además de la aplicación
de las operaciones para el desarrollo de algoritmos que estos
talleres comentan. La siguiente grafica esquematiza como fue
planteado el proceso de la lógica de programación para nuestro
proyecto y en que nivel entra nuestro medio propuesto marcado con
negritas para apoyar la investigación, partiendo de ese punto los
niveles de abajo son considerados en la herramienta.
- 13 -
Capítulo III
La Herramienta Propuesta Existe un sin fin de maneras de escribir
algoritmos. Se han implementado cientos de lenguajes de
programación desde los años 50. Sin embargo, pocas son las personas
que dominan más de 3 lenguajes. La mayoría de las empresas siempre
usan por lo regular un par de ellos en sus desarrollos y terminan
especializándose en uno. Entonces ¿por qué estudiar una diversidad
de lenguajes que es poco probable usar en el ámbito profesional? La
respuesta a esta pregunta se centra en los diversos paradigmas de
programación que permiten tener una perspectiva diversificada de
cada uno, además de que existen problemas que son más fácilmente
expresados en un lenguaje que en otro de paradigma diferente. En
otras palabras, así como no existe un algoritmo universal, tampoco
hay un lenguaje de programación universal. Por otro lado, como
comenta Terrance W. Pratt(08), existen una serie de razones para
fundamentar esta pregunta, en la cual no sólo se distingue a un
lenguaje por sus características sino que además deberíamos incluir
el costo de:
1. Mejorar la habilidad para desarrollar procesos eficaces. 2.
Mejorar el uso del lenguaje. 3. Acrecentar el propio vocabulario
con instrucciones, sintaxis o estructuras de
control sobre programación. 4. Hacer posible una mejor elección del
lenguaje de programación. 5. Facilitar el aprendizaje de un nuevo
lenguaje. 6. El costo del propio lenguaje (capacitación,
implementación, creación de
aplicaciones y mantenimiento)
Así entonces, el estudio y aprendizaje de varios lenguajes de
programación no es sólo una herramienta enriquecedora y formativa
sino también una habilidad profesional que debe cubrirse para
competir en un mercado laboral. En este punto entonces la pregunta
se transforma en ¿cómo proporcionar al estudiante la habilidad no
sólo para aprender a programar sino además aprender a programar
bajo varios paradigmas de programación de computadoras? Una
respuesta a esta pregunta la ofrecemos en este trabajo de
investigación. 3.1 Construcción de la aplicación. La respuesta a la
pregunta que hemos venido planteando a lo largo de todo este el
trabajo y que hemos condensado en el apartado previo se presenta en
forma de una aplicación informática que permite a un docente
exponer los principios fundamentales de la programación de
computadoras y además auxiliarlo en su traslado a otros paradigmas.
Curiosamente esta solución surge de una actividad de programación,
una actividad que lleva a la construcción de una aplicación
informática de ayuda al conocimiento de esta tarea. Como toda
aplicación informática debidamente desarrollada, su construcción se
ha llevado a cabo en forma metódica. El ciclo de vida de los
sistemas de información
- 14 -
dicta gran parte de este método además de proporcionar una visión
mucho más completa de las expectativas de vigencia del desarrollo.
Tal como está aceptado este ciclo de vida se compone de las
siguientes etapas:
1. Análisis. 2. Diseño. 3. Desarrollo. 4. Pruebas. 5.
Implementación. 6. Mantenimiento. 7. Fin de Vida
La aplicación fue desarrollada con una visión en este ciclo de
vida. Aquí describiremos los pormenores de su construcción.
Capítulos posteriores describirán su utilización. Análisis. La
información sobre el problema fue recopilada de diversas
fuentes:
1. La experiencia profesional de los docentes en el desarrollo de
diversos proyectos, ya sea como consultores o como parte de un área
de sistemas en una empresa.
2. La experiencia de los docentes en la enseñanza. 3.
Retroalimentación de los alumnos en varias generaciones en la
carrera de
Informática a través de la aplicación de un cuestionario (anexo).
4. Experiencias en el abandono de la carrera por parte de
algunos
estudiantes 5. La complejidad de las materias de la academia de
programación y su
respectiva seriación. 6. Las malas experiencias de los alumnos en
el rubro de la programación
Muchas de estas características se subsanan con la herramienta
propuesta. Con toda esta información se hace una propuesta en los
diagramas de flujo siguientes, lo cual es una conversión de los
algoritmos hacia los diversos lenguajes. El análisis de la
aplicación incluyó la selección de los lenguajes de programación
más representativos que se imparten en la universidad. En la
actualidad estos lenguajes de programación se han orientado mucho a
los ambientes gráficos gracias a los asistentes de aplicaciones y
generadores de código. Estas herramientas ayudan a agilizar el
proceso de creación de programas pero tratándose de una experiencia
de aprendizaje son contraproducentes al ocultar la programación de
las aplicaciones. Así entonces esta herramienta desechó el incluir
facilidades de este tipo. La selección de lenguajes se orientó en
el paradigma de programación que se desea presentar para su
aprendizaje más que el lenguaje en sí, de tal suerte que los
lenguajes seleccionados fueron: Paradigma Lenguajes 1. Imperativo
Pascal y C
- 15 -
2. Funcional Scheme 3. Basado en Reglas Prolog 4. Orientado a
Objetos Delphi 5. Orientado a Eventos Visual Basic
En el caso del paradigma imperativo se decidió considerar a dos de
ellos por su importancia académica (Pascal) y comercial (C). La
fuente de los lenguajes implementados ha sido:
• Versión libre del lenguaje Prolog:
http://www.swi-prolog.org/home.html • Versión libre del lenguaje
Visual Basic:
http://msdn.microsoft.com/downloads/ • Versión libre del lenguaje
Pascal. Usando aplicaciones de consola. Principio del formulario:
http://bdn2.borland.com/article/20803
• Versión libre del lenguaje Delphi:
http://www.borland.com/downloads/download_delphi.html
• Versión libre del lenguaje C:
http://community.borland.com/article/0,1410,20841,00.html
• Versión libre del lenguaje Scheme: http://www.drscheme.org/
Por supuesto, en el reconocimiento de estos lenguajes ha debido de
hacer uso de la gramática correspondiente. El objetivo del presente
trabajo es la utilización de esta herramienta y no tanto los
pormenores de su construcción, es decir, es nuestro medio
demostrativo mas no el fin que se persigue; por lo que, por
brevedad, detalles sobre gramáticas de estos lenguajes y su
implementación se omiten. Diseño. El diseño de la aplicación parte
de un enfoque jerárquico que queda descrito por la siguiente
figura:
Diseño Diseño Procedimental
- 16 -
El diseño de datos de esta aplicación incluyó el diseño de la
estructura que los almacenará. La Base de datos se normalizó hasta
la 3a forma normal, en la que nuestro diccionario de datos quedó
sustentado en lo siguiente:
1. Restricciones de cada atributo. 2. Integridad referencial de la
base y las excepciones a cada uno de los
atributos. 3. Los programas que usan las tablas y los atributos de
cada una de ellas. 4. Acceso al sistema a través de una tabla de
usuarios. 5. Diversos parámetros para el buen funcionamiento de la
herramienta
(Impresoras, drivers de conexión, entre otras).
Base de datos de nuestra aplicación.
La figura anterior nos muestra todas las relaciones con integridad
referencial de la base de datos. Por otro lado, para hacer la
conexión a esta base de datos a través de la herramienta, se usa un
driver de conexión utilizando un origen de datos ODBC, que se
muestra a continuación.
- 17 -
El diseño arquitectónico correspondió a la definición de los
módulos que componen a la aplicación:
Diseño Modular de la aplicación.
Nivel de Madurez
Catálogos de los
- 18 -
El concepto arquitectónico se esquematizó como un apilamiento de
módulos, entre mayor sea el nivel, mejor será el nivel compresión
de los elementos de la programación de los lenguajes y mejor el uso
de la herramienta para el logro del objetivo. El diseño de interfaz
se hizo a través de menues de donde el usuario selecciona los
diferentes elementos de construcción que permiten seleccionar lo
elementos de construcción o control necesarios en el uso del
sistema. Los siguientes diagramas de flujo ilustran el proceso que
surgió para la elaboración de la herramienta, que por cierto, está
desarrollada en el lenguaje de programación de un ambiente visual.
Se consideraron las gramáticas más representativas y las más
estandarizadas para no tener problemas con los compiladores reales
de los lenguajes. También hay que recalcar que el reconocimiento de
las gramáticas está desarrollado internamente en cada programa, de
tal forma que sí el proceso de conversión de un lenguaje sufre
alguna modificación porque está mal elaborado será necesario
actualizar el programa respectivo y volver a compilar el proyecto
para generar un nuevo ejecutable.
Análisis del proceso para la conversión de algoritmos 1ra. Fase
para el desarrollo del sistema
- 19 -
Análisis del proceso para la conversión de algoritmos en su 2da.
Fase para el desarrollo del sistema
Análisis del proceso para la captura de algoritmos en el ambiente
de desarrollo de la herramienta
- 20 -
La herramienta se desarrolló con base en módulos fuertemente
acoplados. Primero por la base de datos que se diseñó ligada a la
funcionalidad de cada módulo y, segundo, porque este esquema
facilita la construcción, mantenimiento y ocultamiento de
información. Los módulos que integran a la herramienta son:
1. Captura de los identificadores o símbolos de las gramáticas 2.
El tutorial de los diagramas de flujo 3. El tutorial de las
estructuras de datos (primitivas, lineales y no lineales) 4. El
proceso de captura de los algoritmos en un ambiente a modo carácter
5. El proceso de conversión del algoritmo a cada uno de los
lenguajes 6. El proceso de copiar y pegar en el ambiente real del
lenguaje 7. El compilar, ejecutar y observar el programa en el
ambiente real
Cada una de los nombres de las formas, reportes, variables, menúes
e inclusive, la base de datos, se establecieron con base en
estándares que ayudarán al desarrollo y mantenimiento de la
herramienta. Las pruebas iniciales se hicieron con algoritmos que
se dan en la asignatura Lógica de Programación y de la bibliografía
básica (13), algoritmos destinados al cálculo de:
1. Un número par 2. Un número múltiplo de otro 3. La identificación
de una persona 4. Una tabla de multiplicar 5. El número N de la
serie de Fibonacci 6. El factorial de un número 7. Separar un
número de 3 dígitos 8. Un número primo 9. Un número perfecto 10.
Ordenar un arreglo
La aplicación fue probada en equipos de arquitectura tradicional,
como la que se esperaría encontrar en las computadoras de la
mayoría de los estudiantes. Se utilizó el tipo de conexión MDAC de
Microsoft y la seguridad se desarrolló a través de un acceso
(usuario y password). 3.2 Descripción del funcionamiento de la
aplicación Para iniciar una pantalla para ingresar un usuario y
contraseña, es presentada:
- 21 -
Después de haber hecho un login en el sistema, se desplegará un
menú principal y, dentro de él, un submenú con cada opción.
Al dar un click en la opción de Catálogos, aparecerá un menú
colgante desde donde podrá accederse a todos los catálogos. Es
importante mencionar que la información que está almacenada en los
catálogos fue la que los alumnos del grupo experimental capturaron
y que tenía sentido para ellos. Los elementos más representativos
de los lenguajes de programación y que se usan durante la fase de
conversión a los diferentes lenguajes se habilita con un click
derecho del Mouse
- 22 -
En el menú de catálogos existen varias opciones, una de ellas es la
pantalla de los operadores, en ella aparece un DBGRID (un visor de
registros), un componente que al momento de crearse la forma se
cargan automáticamente en ella las tuplas que están en la tabla;
todo a través de instrucciones de código SQL.
También tenemos un DBNAVIGATOR que sirve para irse desplazando por
los registros y complementa al visor de registros. Existe Seis
botones en la forma que sirven para:
1. Alta de nuevos registros 2. Editar la informacion 3. Borrar la
información 4. Imprimir un reporte de la información de la forma 5.
Salir para terminar la forma 6. Consultas de informacion
- 23 -
La siguiente forma aparece cuando se desea modificar una tupla de
la tabla, dando doble click sobre el registro que deseamos editar,
o también mediante un click al registro y un click en el botón de
editar. La forma se mostrará con los datos del registro que se
escogió.
En el menú principal de la aplicación, encontraremos la opción
Proceso, que nos permite ver todo, agregar elementos faltantes y
obtener reportes.
Un ejemplo del reporte es como se muestra a continuación:
- 24 -
La opción de Diagramas de flujo nos presentará un submenú con los
símbolos usados más usados en los procesos.
En esta parte del menú observamos que existen diversas estructuras
de control en los diversos lenguajes de programación.
- 25 -
La opción de Archivos del menú principal nos presenta una pantalla
para capturar los algoritmos como si fuera un ambiente de
desarrollo (IDE).
La imagen anterior muestra la pantalla de captura de un programa.
Todos los algoritmos capturados y grabados están con la extensión
*.NLP (que significa nuevo lenguaje de programación), para
distinguir nuestros algoritmos de la mayoría de las extensiones que
una computadora tiene para todos sus archivos. La siguiente imagen
ilustra un ejemplo de captura de un programa.
- 26 -
De la opción Traduce sale un menú colgante con el proceso de
conversión a los diferentes lenguajes de programación en los
diferentes paradigmas.
En las siguientes imágenes se muestra la conversión a varios
lenguajes de programación. En estas imágenes se muestran tres
botones: el primero sirve para buscar y cargar el algoritmo
respectivo que se esta trabajando contenido en la parte de arriba
de la forma; el segundo botón sirve para hacer la respectiva
traducción del algoritmo al lenguaje seleccionado, mostrado en la
parte inferior de la forma, y el tercer botón sirve para copiar el
código convertido y poder llevarlo mediante el clipboard al
ambiente real de compilación.
- 27 -
- 28 -
- 29 -
El siguiente diagrama resume el funcionamiento de la
aplicación
El diseño de esta herramienta y su elaboración no ha sido el
producto de una petición o trabajo por encargo. Su elaboración
llevó 8 meses y es el producto de experiencias de campo e ideas
entorno a la docencia sobre el tema. Una herramienta con capacidad
para cualquier lenguaje hubiera sido un proyecto mucho más
ambicioso ya que las gramáticas de conversión de cada uno de los
lenguajes de programación implementados debían estar programadas
dentro de ella.
3.2.1 Códigos Convertidos A continuación se presentan algunos
ejemplos de los resultados de la conversión de código del algoritmo
presentado inicialmente a los lenguajes soportados por la
herramienta. En sí, el algoritmo planteado tiene poca importancia;
en este ejemplo se presenta uno que sirve para encontrar la
sumatoria de las divisiones enteras de los números mayores a uno
para poder decir si es un número perfecto o no. Lo importante es la
apreciación de como un algoritmo es representado en diversas
implementaciones. Pseudocódigo del algoritmo inicial. Programa
NúmeroPerfecto define Valor TipoDeDato Entero Contador TipoDeDato
Entero Índice TipoDeDato Entero Resultado TipoDeDato Entero
Operación TipoDeDato Entero I TipoDeDato Entero j TipoDedato Entero
suma TipoDeDato Entero Valida TipodeDato Entero inicioprograma lee
(Valor) I = 1
- 30 -
mientras I menoroiguala Valor haz inicioproceso suma = 0 j = 1
operación = i div 2 mientras j menoroiguala operación haz
inicioproceso resultado = i residuo j si resultado iguala 0
entonces suma = suma mas j j = j mas 1 finproceso si suma iguala I
entonces imprime ('El Número Perfecto Es ==> :' I); si suma
diferentea i entonces imprime ('El Número No Perfecto Es ==> :'
I); i = i mas 1 finproceso lee (valor) finprograma Lenguaje Pascal
// Programa para enseñar el lenguaje Pascal // Paradigma
Imperativo, es un paradigma interesante // Para los alumnos de
universidad PROGRAM NÚMEROPERFECTO VAR VALOR : INTEGER; CONTADOR :
INTEGER; INDICE : INTEGER; RESULTADO : INTEGER; OPERACION :
INTEGER; I : INTEGER; J : INTEGER; SUMA : INTEGER; VALIDA :
INTEGER; BEGIN READLN (VALOR); I := 1; WHILE I <= VALOR DO BEGIN
SUMA := 0; J := 1; OPERACION := I DIV 2; WHILE J <= OPERACION DO
BEGIN RESULTADO := I MOD J; IF RESULTADO = 0 THEN SUMA := SUMA +
J;
- 31 -
J := J + 1; END; IF SUMA = I THEN WRITELN (EL NÚMERO PERFECTO ES
==>: I); IF SUMA <> I THEN WRITELN (EL NÚMERO NOT PERFECTO
ES ==>: I); I := I + 1; END; READLN (VALOR); END.
Lenguaje C // Programa para enseñar el lenguaje C // Paradigma
Imperativo, es un paradigma interesante // para los alumnos de
universidad #include <stdio.h> #include <conio.h> char
palabra; int main() { int VALOR; int CONTADOR; I int RESULTADO; int
OPERACION; int I; int J; int SUMA; int VALIDA; { printf ("\nDigita
el valor : "); scanf ("%i", &VALOR); I = 1; while ( I <=
VALOR ) { SUMA = 0; J = 1; OPERACION = I DIV 2; while ( J <=
OPERACION ) { RESULTADO = I MOD J; CHAR uno I ; SUMA = SUMA + J; J
= J + 1; } CHAR uno I ; printf ("\nLos valores son %i ",'EL NÚMERO
PERFECTO ES ==> :' ,I);
- 32 -
CHAR uno I ; printf ("\nLos valores son %i ",'EL NÚMERO NOT
PERFECTO ES ==> :,i); I = I + 1; } printf ("\nDigita el valor :
"); scanf ("%i", &VALOR); palabra = getch(); }
Lenguaje Prolog % Programa para enseñar el lenguaje Prolog % Tiene
Reglas y Opción para no salirse % Tiene Desición del valor leído
opción(X):- X=0, write('Elegiste Salir'),nl. opción(X):-
write('Elegiste Regresar'),nl. regla(VALOR,OPERACION,Otravariable)
:- J <= OPERACION , RESULTADO IS I MOD J, I = 0 THE, SUMA1 IS
SUMA + J, J1 IS J + 1, INDICE = SUMA THEN, write ('El valor es
PERFECTO ==> :' , I),nl, INDICE <> I THEN, write ('El
valor es NO ES PERFECTO ==> :’ ,I), I1 IS I + 1, VALOR1 IS VALOR
+ 0, OtraVariable1 IS Otravariable + 0,
regla(VALOR1,OPERACION1,Otravariable1). menu :- repeat, I IS 1,
write ('Digita el valor'), read(VALOR),nl,
regla(VALOR,OPERACION,Otravariable), write ('Elige el número 0 para
salir'),nl, write ('u otro número para seguir'),nl, read(X),
opcion(X), X=0.
- 33 -
Lenguaje Scheme ; Programa para enseñar el lenguaje Scheme ;
Paradigma Funcional, es un paradigma interesante ; los alumnos de
universidad (Define (NÚMEROPERFECTO) (let* ( (VALOR 0) (CONTADOR 0)
(INDICE 0) (RESULTADO 0) (OPERACION 0) (I 0) (J 0) (SUMA 0) (VALIDA
0) ( Begin (set! VALOR (read)) (set! I + ( 1 0 ) ) ( DO > ( I
VALOR ) ( ) ( ( Begin (set! SUMA + ( 0 0 ) ) (set! J + ( 1 0 ) )
(set! OPERACION + ( I DIV 2 0 ) ) ( DO > ( J OPERACION ) ( ) ( (
Begin (set! RESULTADO + ( I MOD J 0 ) ) (I 0) (set! SUMA + ( SUMA J
0 ) ) (set! J + ( J 1 0 ) ) ) ) (I = SUMA) (display (list "valores"
'EL NÚMERO PERFECTO ES ==> :' I) ) (I <> SUMA ) (display
(list "valores" 'EL NÚMERO NOT PERFECTO ES ==> :) ) (set! I + (
I 1 0 ) ) ) ) (set! VALOR (read)) ) ) )
Lenguaje Delphi (Pascal OO) // PROGRAMA PARA ENSEÑAR EL LENGUAJE
DELPHI // PARADIGMA ORIENTADO A OBJETOS, ES UN // PARADIGMA
INTERESANTE PARA LOS ALUMNOS // DE UNIVERSIDAD
- 34 -
- 35 -
OPERACION : INTEGER; I : INTEGER; J : INTEGER; SUMA : INTEGER;
VALIDA : INTEGER; BEGIN VALOR := INPUTBOX('VALOR','NÚMERO ',
'ESCOGE VALOR'); VALOR:= STRTOINT(VALOR); I := 1; WHILE I <=
VALOR DO BEGIN SUMA := 0; J := 1; OPERACION := I DIV 2; WHILE J
<= OPERACION DO BEGIN RESULTADO := I MOD J; IF RESULTADO = 0
THEN SUMA := SUMA + J; J := J + 1; END; IF SUMA = I THEN
SHOWMESSAGE ('EL VALOR ES ' + INTTOSTR('EL NÚMERO PERFECTO ES
==> :' I)); IF SUMA <> I THEN SHOWMESSAGE ('EL VALOR ES '
+ INTTOSTR('EL NÚMERO NOT PERFECTO ES ==> :'); I := I + 1; END;
END; PROCEDURE TDELPHI.BUTTON2CLICK(SENDER: TOBJECT); BEGIN IF
MESSAGEDLG('REALMENTE DESEAS SALIR ?' ,MTINFORMATION,[MBYES,
MBNO],0) = MRYES THEN CLOSE; END; END.
Lenguaje Visual Basic 'Programa para enseñar el lenguaje Visual
Basic 'Paradigma Orientado a Eventos, es un paradigma interesante
'para los alumnos de universidad Option Explicit Dim Valor As
String Dim Valor1 As Integer
- 36 -
Private Sub Btn_Calcula() Dim VALOR As integer Dim CONTADOR As
integer DIM INDICE AS integer Dim RESULTADO As integer Dim
OPERACION As integer Dim I As integer Dim J As integer Dim SUMA As
integer Dim VALIDA As integer Valor = Inputbox ("Digita el valor ")
VALOR= Val(Valor) I= 1 do While ( I <= VALOR ) SUMA= 0 J= 1
OPERACION= I DIV 2 do While ( J <= OPERACION ) RESULTADO= I MOD
J IF RESULTADO = 0 THEN _ SUMA= SUMA + J J= J + 1 Loop IF SUMA = I
THEN _ msgbox ("Los valores son " & 'EL NÚMERO PERFECTO ES
==> :' & I) IF SUMA <> I THEN _ msgbox ("Los valores
son " & 'EL NÚMERO NOT PERFECTO ES ==> :’ & I ) I= I + 1
Loop Valor = Inputbox ("Digita el valor ") VALOR= Val(Valor) END
SUB Private Sub btn_salir_Click() Dim res As Integer resp =
MsgBox("Estas seguro de salir", vbYesNo + vbQuestion) If resp =
vbNo Then Exit Sub If resp = vbYes Then End End Sub
3.3 Instalación de la aplicación. Al igual que toda aplicación de
los modernos ambientes gráficos, se necesita un proceso de
instalación de la aplicación para que pueda ser utilizada sin
problemas. Para esta fase del proyecto se utilizó un software, que
genera un archivo ejecutable de instalación cuyo funcionamiento
deberá ya ser familiar para todo aquél que haya instalado software
en el entorno de Windows. Sin embrago la aplicación lleva paso a
paso al usuario si éste no está familiarizado con el proceso de
adición de software a la computadora.
- 37 -
- 38 -
Capítulo IV La Formulación de Algoritmos
4.1 La necesidad de una metodología para la creación de algoritmos.
Conforme a lo que se ha declarado a lo largo de este trabajo, lo
que se pretende es ayudar a reducir el tiempo en que los alumnos
aprenden a crear programas independientemente del lenguaje de
programación utilizado. Para esta labor resulta imprescindible el
uso de un método en la formulación del algoritmo inicial. En la
medida en que un proceso metódico sea usado en la formulación del
procedimiento de solución, la herramienta aquí presentada
disminuirá el tiempo en el que los estudiantes se tarden en
aprender a programar, tal es la hipótesis de este trabajo. Un
algoritmo es un procedimiento formado por un grupo de pasos,
ordenados que proveen la solución a un problema. El razonamiento y
expresión detrás de cada uno de ellos puede ser diverso.
Revisaremos algunas sugerencias entorno al tema. La técnica del
pseudocódigo recurre a tratar a los identificadores de un algoritmo
como si fuera un idioma en particular sin llegar a serlo. Por lo
regular siempre se ha usado el idioma inglés pero puede ser
cualquier otro. En nuestro caso favoreceremos al español. Las
palabras que se utilizan tienen que ver con aspectos de la
programación como Leer, Imprimir, Si Entonces, Realiza Mientras
Condición, Inicio, Fin, entre otros. Para cualquier algoritmo es
necesario hacer una prueba de escritorio, que es seguir en una hoja
en papel el comportamiento del algoritmo y las variables que
intervienen en él para su mejor entendimiento. La prueba de
escritorio siempre permitirá ver si un algoritmo funciona
correctamente o identificar las correcciones necesarias. A
continuación se muestra el desarrollo de algunos algoritmos en
pseudocódigo. Ejercicio 1. Realizar un algoritmo que obtenga el
factorial de un número entero positivo. 1 Inicio 2 Leer Valor 3
Factorial = 1 4 Factorial = Factorial * Valor 5 Valor = Valor – 1 6
Si Valor > 1 Entonces Ve a 4 7 Imprime Factorial 8 Fin En este
algoritmo se observa lo siguiente:
a) Se utilizó una variable Factorial con un valor inicial de 1 b)
Se reemplaza el valor de una misma variable (Factorial) con una
operación
aritmética utilizando el valor que tiene en ese momento la variable
c) Se hacen Multiplicaciones regresivas de los valores d) Se resta
1 al valor Inicial Digitado
- 39 -
e) Se Condiciona la variable para que se repita el calculo de la
multiplicación (Se regresa a una instrucción especifica)
Ejercicio 2. Realizar un algoritmo que obtenga el 5 número de la
serie de Fibonacci 1 Inicio 2 Contador = 1 3 Leer Primer valor 4
Leer Segundo valor 5 Tercer valor = Primer valor + Segundo valor 6
Imprimir Tercer valor 7 Primer valor = Segundo valor 8 Segundo
valor = Tercer valor 9 Contador = Contador + 1 10 Si Contador <
6 Entonces Ve a 5 11 Fin
Números Números Números Números Números Números Primer 1 2 3 5 8 13
Valor Segundo 2 3 5 8 13 21 Valor Número N De La serie 3 5 8 13 21
34 En este algoritmo se observa lo siguiente:
a) Se Leen dos datos en 2 variables b) Se suman los datos en una
tercera variable c) Se imprime la tercera variable d) Se sustituye
el valor primero por el valor de la segunda variable e) Se
sustituye el segundo valor por el valor de la tercera variable f)
Se obtiene el tercer valor con la suma de los nuevos valores de la
variables g) Se condiciona a que la variable contador sea menor a
6, para obtener 5
valores. Ejercicio 3. Realizar un algoritmo que obtenga la suma de
los dígitos de un número mayor a 99 y menor a 1000. Es un número de
3 dígitos (100 – 999).
1 Inicio 2 Leer Número 3 Si Número < 99 o Número > 999
Entonces Ve a 2 4 Primer digito = Número Residuo 100
- 40 -
5 Primer digito_1 = Número – Primer digito 6 Primer digito_2 =
Primer digito_1 / 100 7 Número = Primer digito 8 Segundo digito =
Número Residuo 10 9 Segundo digito_1 = Número – Segundo digito 10
Segundo digito_2 = Segundo digito_1 / 10 11 Tercer digito = Segundo
digito 12 Suma = Primer digito_2 + Segundodigito2 + Tercer digito
13 Imprimir Suma 14 Fin
En este algoritmo se observa lo siguiente:
a) Se condiciona a que solamente se digite un número de 3 dígitos
b) Se utiliza la división en donde lo importante es el residuo c)
Se hacen operaciones aritméticas con los dígitos y se obtiene la
suma
Ejercicio 4. Realizar un algoritmo que obtenga si un número
capturado es primo o no. 1 Inicio 2 Leer Valor 3 Contador = 1 4
Indice = Valor 5 Operación = Valor División entera Contador 6 Si
Operación = Valor o Operación = 1 Entonces Ve a 13 7 Valida =
Operación * Contador 8 Si Valida = Valor Entonces 9 Inicio Si 10
Imprime “Valor no es número Primo “ 11 Ve Fin 12 Fin Si 13 Contador
= Contador + 1 14 Si Contador < Indice Entonces Ve a 5 15 Si
(Contador - 1 ) = Indice Entonces Imprimir “Valor Si es Número
Primo” 16 Fin En este algoritmo se observa lo siguiente:
a) Se Lee un Valor b) Se Inicializa dos Variables una con un valor
1 y otra con el Valor Leído c) Se hace una División Entera solo nos
importa la parte entera no el decimal (5
Div 2) = 2.5, solo nos interesa el 2, (5 Div 3) = 1.666, solo nos
interesa el 1. d) Se valida la operación entera con la unidad y con
el mismo Valor capturado e) Se aumenta 1 a la variable contador f)
Se valida si la variable contador es menor al valor capturado
- 41 -
g) Se hace otra vez la división Entera pero ahora con el nuevo
valor aumentado de la variable contador
h) Se Valida y se observa que para el nuevo valor como es mayor a
1, la condición ya no es cierta y se continua con la siguiente
instrucción
i) Se realiza una multiplicación del valor entero de la división
con el contador. j) Se realiza una validación si la multiplicación
llegará a ser igual que el valor
capturado , en ese momento se indica que el valor no es primo y se
detiene el proceso
k) Si no se aumenta 1 a la variable contador l) Se valida si el
nuevo valor es menor al valor capturado y se repite el proceso m)
Si el valor aumentado de contador llegara hasta el valor capturado
entonces
se dice que el valor si es un número primo.
Al margen de estos ejercicios, considérese la posibilidad de contar
con un ambiente de desarrollo para capturarlos y guardarse para
futuras modificaciones o una posterior implementación en algún
lenguaje. Tal capacidad sin duda será bien recibida por estudiantes
y profesores, una capacidad que consideramos es un valor agregado y
aportación de la herramienta al proceso de enseñanza. Así entonces
la aportación de este trabajo en términos de una técnica y
herramienta podrá ser valorada desde la captura de algoritmos hasta
poder llevarlos a 6 lenguajes de programación. 4.2. Validación de
campo de la herramienta presentada y técnica descrita. La
herramienta aquí descrita ha sido aplicada con éxito a los grupos
de Lógica de Programación que se imparte como parte del programa
Ingeniería en Informática en la Universidad Politécnica del Valle
de México durante los cuatrimestres 2007-2 y 2007-3. Inicialmente,
su utilización fue con los alumnos de un grupo experimental, con la
esperanza de poder ser usada por todos los alumnos de la carrera en
un futuro próximo. Se mantuvo también un grupo de control. Para
tener una mezcla homogénea de los dos grupos, se recopilaron los
antecedentes académicos de los estudiantes. Se puso particular
interés en el aprovechamiento sobre materias como física y
matemáticas , así como a la escuela de procedencia. Finalmente, a
través de un breve cuestionario se les interrogó sobre su interés
para asistir a un curso de programación. El curso de programación
se impartió tres días a la semana bajo un programa de cuatro fases:
1. Lógica de programación. 2. Desarrollo de algoritmos. 3.
Desarrollo de algoritmos empleando la herramienta de enseñanza. 4.
Conversión de los algoritmos capturados. Este último paso sólo se
dió al grupo experimental, en el cual se veía el efecto de la
traducción instantánea del código, para ser copiado al clipboard de
Windows. El grupo de control únicamente tradujo los algoritmos
vistos en la segunda fase del programa a algún lenguaje de
programación.
- 42 -
Capítulo V Fases de la investigación.
Para el desarrollo de estas fases, se elaboró una planeacion que
nos apoyaría para cubrir los objetivos planteados, dentro de estas
actividades se suscitaron algunas que no se pudieron controlar
como: la deserción y el desinterés; algunos alumnos que ya formaban
parte de los grupos desertaron porque era mucha la lejanía de la
escuela a su casa o que era muy noche dando un porcentaje del 18%,
cabe mencionar que el horario del taller era de las 20:00 a las
21:00 todos los días de lunes a viernes y el desinterés que no era
lo que esperaban, querían empezar desde un inicio a programar. 5.1
La importancia de un taller de lógica de programación (TLP) Primera
La fase 1 de la investigación se termino de acuerdo a la
planeacion, en ella se inicio a los alumnos en conceptos totalmente
teóricos; desde la definición de un algoritmo, los tipos de
algoritmos, las diversas estructuras de datos y las estructuras
control, así como ejemplos de las habilidades mentales relacionadas
con la lógica de programación (abstracción, análisis, síntesis,
inferencia, entre otras), ejemplos de procesos internos del
individuo (atención, adquisición, personalización, recuperación,
transferencia, entre otros) muy complejos que desde luego
pertenecen a otro ámbito de estudio y por ultimo para esta fase se
tomo como referencia el articulo de Eduardo Rene Rodríguez Ávila
(09), en donde el autor hace una excelente descripcion del correcto
y completo desarrollo de un algoritmo. Esta fase se llevo a cabo en
21 días, notándose un avance considerable en los alumnos y un gran
interés por la programación; con el transcurso de esta fase, que es
de pura teoría se les pidió a los alumnos que resolvieran ejemplos
de ejercicios en cuanto a la definición de formulas matemáticas y
éstas como se traducirían en términos de operadores relacionales,
lógicos y numéricos, la sorpresa fue muy grande porque no tienen
depurado aspectos básicos como el algebra, se resolvieron simples
operaciones básicas de ellas se obtuvieron como 10 resultados por
cada una. Esto nos lleva a concluir que muchas veces la
problemática no se encuentra en el presente si no en el pasado,
pero de mucho tiempo atrás (3 años mínimo), las siguientes son las
operaciones aritméticas que se les indico que realizaran,
obteniendo resultados muy variados: a) 3 * 4 - (46 mod 5) + 69 / 4
- 35 * 3 b) (81 + 3 * 5) mod 7 - 5 * 8 / 2 - 16 * 3 c) 6 div 12 +
23 + (31 - 12 * 24 / 4). Por todo esto se determina que sí es
necesario generar una nueva estrategia didáctica para la enseñanza
de la programación, que ayude a disminuir el tiempo en aprender a
programar y que nos lleva a corroborar que el proyecto y la
aplicación están totalmente sustentadas. Segunda
- 43 -
La fase 2 del proceso, se desarrollo con conceptos de técnicas de
diseño de algoritmos (Pseudocódigo, Diagramas de Flujo y
Nassi-Sneiderman), el mismo problema se realizaba en las tres
técnicas para un mejor entendimiento por parte de los alumnos y a
solo una de ellas se realizaba la prueba de escritorio ya que con
está se va depurando el algoritmo para su mejora, se escogió la
técnica de pseudocódigo. También en esta fase, se debía de tener la
mayoría o la totalidad de los conceptos de lógica de programación,
que se dio en la fase 1. Cabe mencionar que esta fase se llevo
también como 21 días, en la cual se observó un interés real para el
diseño y creación de algoritmos de problemas triviales y complejos,
la mayoría de los alumnos tenían la intención de hacerlos y algunos
lo consiguieron, pero otros no, se considera que en esta fase hay
que dedicarle más tiempo, mucho tiempo. Con estas dos fases, los
alumnos desarrollan los conceptos de diseño y creación de
algoritmos de una manera metódica y ordenada, sin entrar en algún
proceso de los ambientes de desarrollo reales de los lenguajes de
programación, con esto se hace que los alumnos se preocupen solo
por el diseño de algoritmos eficaces, en un tiempo corto
considerable. Hay alumnos que tienen mucha iniciativa y ello ayuda
a la resolución de los algoritmos, otros alumnos tienen iniciativa
pero les falta un proceso de entendimiento y asimilación; cuando
consideran que no pueden, se llegan a aislar y por el contrario
cuando saben les genera mucha confianza y pueden comunicarse
fácilmente, debatir, preguntar o llevar su conocimiento a un nivel
mayor. Tercera En esta siguiente fase los programas que se debían
de desarrollar son los algoritmos que se elaboraron en la fase
anterior y que para nuestra investigación son los de la técnica de
pseudocódigo, los cuales ya les eran muy familiares. Cabe
mencionar, qué hasta esta parte se dio la misma información tanto
teórica como técnica a los dos grupos: el experimental y el de
control. Al grupo experimental se le invito a que capturaran los
algoritmos diseñados en la herramienta propuesta, este proceso fue
de mucha exigencia para ellos, es como cualquier ambiente de
desarrollo (IDE) se crea un proyecto: guardar, modificar, imprimir,
compilar, detener, abortar, salir, entre otros. Cuarta En la fase
de desarrollo de programas que por cierto era la última se exhorto
a los grupos a que generaran programas reales, al grupo de control
en un lenguaje visual y al experimental a través de una conversión
con la herramienta propuesta, con los algoritmos capturados en la
fase anterior. En el grupo de control se elaboraron 11 programas
los tiempos de desarrollo fueron los siguientes para un sólo
lenguaje de programación.
5.1.1 Grupo de Control
Descripción del programa
Tiempo en Minutos
1 Suma de los primeros 10 números enteros positivos 30 2
Desarrollar una tabla de multiplicar 20
- 44 -
3 Determinar si una persona es joven o adulta 10 4 Obtener el
Factorial de un número positivo 15 5 Convertir un número decimal a
binario 20 6 Obtener el quinto número de la serie de fibonaci de la
suma 20 7 Separar un número de 3 dígitos 20 8 Determinar si un
número es Par o Non 20 9 Determinar si un número es múltiplo de
otro 20 9 Determinar cual es la mayor temperatura de 10 valores
posibles 30 10 Determinar si un número es primo 30 11 Ordenar 10
números capturados 60
En este grupo también se observo qué a medida que se iba avanzando
en el diseño de programas, realmente se iba teniendo un avance
considerable; pero, la debilidad es que sólo se hacia en un
lenguaje de programación como podría ser Visual Basic y el tiempo
en poder llevarlos a otros lenguajes de programación es casi
similar, y si contamos que son 6 lenguajes, entonces el tiempo en
llevarlos a los ambientes de desarrollo reales en verdad se
multiplicaría por 6, y en algunos casos en más. La siguiente tabla
muestra los tiempos estimados para el desarrollo de los algoritmos
en los diferentes lenguajes de programación, por parte del grupo de
control, estos lenguajes son los que se encuentran implementados en
la herramienta propuesta.
Programa No.
Visual Basic
Pascal C Scheme Prolog Delphi
1 30 30 30 40 40 30 2 20 20 20 30 30 20 3 10 10 10 20 20 10 4 15 15
15 25 25 15 5 20 20 20 30 30 20 6 20 20 20 30 30 20 7 20 20 20 30
30 20 8 20 20 20 30 30 20 9 20 20 20 30 30 20 9 30 30 30 40 40 30
10 30 30 30 40 40 30 11 60 60 60 80 80 60
5.1.2 Grupo experimental La herramienta que se propuso se instaló
en un laboratorio que se conoce como tecnología Informática, de tal
forma que los alumnos tenían una maquina para cada uno de ellos y
no había posibilidad de que compartieran equipo, se les dio un
acceso con usuario y password, para que pudieran y quisieran hacer
uso de la aplicación, cuando desearan. Tenían un acceso para que
otros alumnos no pudieran entrar y pudieran modificar sus archivos
y los resultados, cabe mencionar que entre mayor sea el número de
alumnos que utilicen la herramienta será mejor, pero en términos
del proceso de búsqueda de informacion, todavía está limitado,
cuando se termine el proceso de esta investigación se dejara libre
a todo alumno inclusive de cualquier carrera.
- 45 -
A este grupo primero se tomó tiempo necesario para enseñar la
herramienta y que ellos pudieran asimilar el funcionamiento y uso
de ella; aunado a ello se sumo un tiempo de prueba y ensayo, que
desde luego este tiempo comparado con el del grupo de control era
mucho mayor; pero una vez que ya se conocía la herramienta, fue
como algo natural para ellos ya la podían manejar muy
eficientemente. En este grupo los tiempos se elevan
considerablemente en los primeros programas, pero luego empiezan a
tomar un mismo nivel comparado con el otro grupo, al final de cada
programa no hay parámetro de comparación porque en pocos minutos se
hace la conversión para todos los lenguajes. La siguiente tabla
muestra los tiempos promedio de los alumnos en el desarrollado de
programas. No Programa Tiempo en
minutos 1 Suma de los primeros 10 dígitos positivos 50 2
Desarrollar una tabla de multiplicar 50 3 Determinar si una persona
es joven o adulta 30 4 Obtener el Factorial de un número positivo
35 5 Convertir un número decimal a binario 40 6 Obtener el quinto
número de la serie de fibonaci de la suma 40 7 Separar un número de
3 dígitos 40 8 Determinar si un número es Par o Non 30 9 Determinar
si un número es múltiplo de otro 35 9 Determinar cual es la mayor
temperatura de 10 valores posibles 40 10 Determinar si un número es
primo 40 11 Ordenar 10 números capturados 60
También en esta fase, para probar que el código convertido
funcionara, se corre el ejecutable de la aplicación por ejemplo,
como Visual Basic, se genera un nuevo proyecto dentro del IDE, se
crea una nueva forma en el proyecto, se baja un botón a la forma y
en el evento click asociado al componente botón de la forma, se
copia el código que fue generado con la herramienta y qué, en ese
momento se encuentra en el portapapeles de Windows, porque así se
le indico con la herramienta (copiar al Clipboard de Windows), se
procede a la compilación de este proyecto, y por ultimo una vez que
se encuentre ejecutando la forma al momento de hacer click en dicho
componente el programa empieza a funcionar. También pasa lo mismo
para otro lenguaje como Pascal, la única diferencia es que el
código aquí corre a modo carácter tal cómo es copiado del
portapapeles. Pasando a otro lenguaje como C, pues simplemente se
genera un nuevo proyecto en el ambiente real, se pega y se compila
para que corra. Claramente aquí los tiempos en ver el mismo código
en estos tres lenguajes de programación, se ve reducido
drásticamente, a pesar de que en un inicio se hayan tardado más
tiempo que el otro grupo en capturarlo y entenderlo. Existe un
concepto muy importante en el desarrollo de algoritmos que es la
prueba de escritorio, cuando los alumnos lo copiaban al ambiente de
desarrollo real del lenguaje, en cada una de sus pruebas se daban
cuenta de que no era lo que querían
- 46 -
y ahí les ayudaba rápidamente para entender cual era la
problemática del diseño del algoritmo, entonces se regresaban a
modificarlo y lo volvían a convertir y repetían este proceso hasta
que saliera según ellos lo habían pensado. También se daban cuenta
al momento de hacer la conversión de que habian escrito cosas mal,
lo corregían y lo volvían a convertir, eso ayudaba a entender la
sintaxis o alguna idea que ellos tenían o cosas que no estaba en el
proceso y las podían incluir. Cabe mencionar que desde un inicio de
la captura del algoritmo en las conversiones primero debe pasarse
al lenguaje Pascal y luego de ahí pasarse a las otras 5
conversiones. Por último, existe un apartado en la herramienta que
les da a conocer a los alumnos las diferentes estructuras de
control y estructuras de datos que existen, tanto primitivas,
lineales y no lineales esto les genera una idea más formal y sólida
de cómo se pueden usar al momento de desarrollar aplicaciones.
5.2Graficas Las siguientes graficas muestran el comportamiento de
los alumnos antes de haber empezado el curso y después de haber
terminado el curso, hay que recalcar que los alumnos del grupo de
control no tuvieron el apoyo de la herramienta y los alumnos del
grupo experimental sí, eso influyo, se vuelve a reafirmar y
demostrar las variables expuestas en nuestra hipótesis.
Antes del Curso
0
2
4
6
8
10
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Preguntas
Excelente
0 1 2 3 4 5 6 7 8
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Preguntas
Excelente
Bien
Regular
Nada
- 47 -
En las graficas anteriores se observa una tendencia de que la
herramienta del proyecto ayudó a la generación de algoritmos, para
su respectiva programación en los diversos lenguajes. No se
pretende generar una idea falsa, de que no será necesario capturar
el programa en los ambientes reales o que para programar se use
esta herramienta propuesta, lo que se hace es enseñarles ágilmente
y más rápido de como se podría programar de una manera mejor. Pero
siempre será necesario capturar el programa, en lenguaje real. No
hay que olvidar cual es el objetivo de la investigación reducir el
tiempo en aprender a programar derivado de una metodología de
diseño de algoritmos en pseudocódigo en lenguaje español, con la
ayuda de una herramienta. Entonces derivado de esto, la aplicación
que se diseño se inicia a los alumnos en el ámbito de la
programación. Entre más se desarrollen algoritmos en la herramienta
mejor será la comprensió