Sergio E. Moreno https://sg.com.mx/ en Software para Aprender a Programar: Desde la perspectiva enseñanza-aprendizaje. https://sg.com.mx/revista/55/software-para-aprender-programar-desde-la-perspectiva-ense-anza-aprendizaje <span class="field field--name-title field--type-string field--label-hidden">Software para Aprender a Programar: Desde la perspectiva enseñanza-aprendizaje.</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/images/programacion-aprender.jpg" width="636" height="303" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 08/21/2017 - 14:59</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/55" hreflang="und">SG #55</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/fundamentos" hreflang="und">Fundamentos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/author-speaker/sergio-e-moreno" hreflang="und">Sergio E. Moreno</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Este artículo está dirigido a todas aquellas personas que desean aprender o enseñar a programar. Ante la gran variedad de herramientas y lenguajes de programación, elegir la opción adecuada para aprender a programar tiende a ser una decisión intimidante. Además de considerar el tipo de personas a las cuales está dirigido cierto lenguaje o herramienta, otro factor a considerar es la metodología de enseñar y aprender, lo que muchas personas no toman en cuenta.</p><p dir="ltr">La metodología aquí expuesta fue probada con estudiantes del nivel medio superior sin conocimientos previos en el contexto de la programación y que al final obtuvieron resultados satisfactorios, lo cual expondremos paso a paso indicando el software como herramienta de enseñanza-aprendizaje, así como el lenguaje de programación.</p><h3 dir="ltr">Acercamiento al conocimiento</h3><p dir="ltr">En esta primera etapa se debe reforzar el concepto de algoritmo (secuencia de pasos) y lógica (toma de decisiones) por lo que se recomienda el uso de Karel, este software permite crear programas haciendo uso de instrucciones 100% en español. Se debe considerar que hasta este momento no se hace uso de algún lenguaje de programación, lo que permite comprender las instrucciones básicas de la programación procedural o estructurada. La ventaja de hacer uso de nuestro propio lenguaje para programar propicia en primera instancia a tener un acercamiento del conocimiento previo con uno nuevo. En el sitio web de la comunidad Karelotitlán [1] puedes encontrar información en español sobre Karel, así como algunos ejercicios para practicar.</p><p dir="ltr">Otro software que se puede utilizar en esta etapa de aprendizaje es Scratch [2], que diferencia de Karel cuenta con una interfaz gráfica llamativa, y hace uso de elementos gráficos que permiten identificar visualmente los procesos de ejecución. El inconveniente para algunas personas es el idioma, ya que está en inglés. A pesar de esto la recomendación es empezar con Karel, resolviendo los escenarios propuestos en su guía y después seguir con Scratch.</p><h3 dir="ltr">Comprendiendo y analizando el lenguaje</h3><p dir="ltr">Después de tener este acercamiento con la programación de algoritmos y procesos, llega el momento de elegir el lenguaje de programación. Puede ser Java o C++, no solo por que figuran en los primeros lugares de popularidad, sino porque hacen uso de una sintaxis definida acorde al paradigma de Programación Orientada a Objetos (POO); y por buenas prácticas de programación, es importante aplicar correctamente los tipos de datos, operadores, métodos y clases. Esta es la fase del aprendizaje en la que los estudiantes tienen más problemas debido a la conceptualización de las propiedades del paradigma de POO (encapsulación, herencia, sobrecarga y polimorfismo), por lo que se debe tener mucha paciencia y demostrar a través de escenarios su aplicación. Sea cual sea el lenguaje elegido, el ambiente de desarrollo (IDE) es un elemento que facilitará el trabajo de codificación al estudiante. Idealmente, el IDE debe tener capacidades que permitan identificar elementos del lenguaje y muestren errores a través de colores y algunas propiedades del texto como negritas o cursivas. Para quienes usan Java, una buena opción es Netbeans [3] y en el caso de C++ puede ser Visual Studio Code [4].</p><p dir="ltr">Aunque también existe la posibilidad de utilizar editores de código más ligeros como Sublime Text, Notepad++, Vim o emacs, considero que no son una buena opción para desarrollador novatos ya que requieren configuraciones adicionales para poder compilar y ejecutar programas; es importante recordar que se trata de facilitar el conocimiento para no terminar en la frustración.</p><h3 dir="ltr">Aplicando y utilizando el conocimiento</h3><p dir="ltr">Una vez que ya se tiene la suficiente conceptualización y uso del lenguaje, podemos aprender a apoyarnos en bibliotecas que nos permitan crear software con mayores capacidades. De esta manera el estudiante podrá corroborar sus conocimientos y adaptarlos a otras aplicaciones con ciertos estándares y reglas. En el caso de nuestro estudio, como se trabajó con adolescentes y con el lenguaje Java, decidimos realizar un videojuego. Para ello elegimos Greenfoot [5], una aplicación que permite desarrollar videojuegos en 2D; también se pudo haber elegido Alice [6] para el desarrollo de videojuegos en 3D. Si hubiese sido el caso del lenguaje C++, lo ideal sería trabajar con la librería SDL (Simple DirectMedia Layer) y STL (Standard Template Library) para el desarrollo de videojuegos. &nbsp;</p><h3 dir="ltr">Regulando el conocimiento</h3><p dir="ltr">Es un hecho que uno no termina de aprender solo con unas horas o un curso, por lo que hace falta practicar o repasar algunos temas. Afortunadamente existen diversos sitios web como Coding Bat [7] y Coding Game [8] que contienen ejercicios de práctica de programación, incluyendo soluciones.</p><h3 dir="ltr">Conclusión</h3><p dir="ltr">Con esta metodología, si eres profesor tus estudiantes tendrán las bases para usar cualquier otro lenguaje de programación, framework u otra tecnología para desarrollar un sistema más complejo y resolver problemáticas. Si eres autodidacta y no quieres caer en la frustración trata de seguir esta secuencia, no intentes correr sin aprender a caminar.</p><p dir="ltr">Aprender o enseñar a programar es un gran reto debido a que existe una diversidad de lenguajes y no es lo mismo que hace algunos años; estamos en un ambiente cambiante en donde hay nuevos entornos de desarrollo, necesidades y tendencias. Debido a esto el proceso de aprendizaje debe ser relativamente rápido, por lo cual es necesario brindar al estudiante una serie actividades y herramientas de software que le favorezcan en el desarrollo de su conocimiento.</p><p>&nbsp;</p><p dir="ltr">Referencias</p><ol><li dir="ltr"><p dir="ltr"><a href="http://www.cmirg.com/karelotitlan/Pantallas/Inicio.aspx">http://www.cmirg.com/karelotitlan</a></p></li><li dir="ltr"><p dir="ltr"><a href="https://scratch.mit.edu/about/">https://scratch.mit.edu</a></p></li><li dir="ltr"><p dir="ltr"><a href="https://netbeans.org/">https://netbeans.org</a></p></li><li dir="ltr"><p dir="ltr">Visual Studio Code</p></li><li dir="ltr"><p dir="ltr"><a href="http://www.greenfoot.org/door">http://www.greenfoot.org</a></p></li><li dir="ltr"><p dir="ltr"><a href="http://www.alice.org/index.php">http://www.alice.org</a></p></li><li dir="ltr"><p dir="ltr"><a href="http://codingbat.com/">http://codingbat.com</a></p></li><li dir="ltr"><p dir="ltr"><a href="https://www.codingame.com/">https://www.codingame.com</a></p></li><li dir="ltr"><p dir="ltr"><a href="http://www.olimpiadadeinformatica.org.mx/OMI/OMI/Inicio.aspx">http://www.olimpiadadeinformatica.org.mx</a></p></li></ol></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>El Maestro Sergio Ernesto Moreno Soto es Profesor de la carrera Técnico en Programación y Técnico en Desarrollo de Software en el Instituto Politécnico Nacional. <a href="mailto:ernestomoor@hotmail.com">ernestomoor@hotmail.com</a></p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Mon, 21 Aug 2017 19:59:14 +0000 sg 7729 at https://sg.com.mx https://sg.com.mx/revista/55/software-para-aprender-programar-desde-la-perspectiva-ense-anza-aprendizaje#comments