Algoritmos Programacion
Algoritmos Programacion
ALGORITMOS Y PROGRAMACIN
GUA PARA DOCENTES
La Educacin Bsica en Colombia comprende los grados 1 a 9; primaria de 1 a 5 y secundaria de 6 a 9 Esta Gua est diseada para ser utilizada, por los maestros, con estudiantes de grados 5 a 9.
EDUCACIN BSICA ALGORITMOS Y PROGRAMACIN (PARA DOCENTES) Juan Carlos Lpez Garca, Primera Edicin, 2007 De esta Edicin: 2007, Fundacin Gabriel Piedrahita Uribe Cali, Colombia. editor@eduteka.org http://www.eduteka.org
Todos Los derechos reservados. Esta gua puede ser descargada desde Eduteka y utilizada gratuita y libremente por los educadores, siempre y cuando lo hagan sin fines comerciales. Est expresamente prohibido alojar este documento o parte de l, sin permiso escrito del autor, en un sitio Web diferente a Eduteka. Se otorga permiso para enlazar este documento desde cualquier sitio Web, con la siguiente direccin: http://www.eduteka.org/AlgoritmosProgramacion.php Este documento tiene un Cuaderno de Trabajo para estudiantes que se puede descargar gratuitamente de: http://www.eduteka.org/AlgoritmosProgramacion.php El autor agradece el envo de cualquier comentario sobre esta Gua a los correos: editor@eduteka.org jualop@gmail.com
EDUCACIN BSICA
ALGORITMOS Y PROGRAMACIN
NDICE 3. 7. 8. 8. 11. 13. 13. 14. 14. 14. 15. 17. 19. 19. 22. 23. 24. 25. 25. 26. 26. 26. 27. 27. 28. 28. 29. 29. 30. 32. 32. 33. 33. 33. 34. 34. 35. 38. 42. 48. 55. 55. 55. 55. 56. 58. 61. 62. 63. 70. Introduccin Agradecimientos UNIDAD 1: SOLUCIN DE PROBLEMAS Solucin de problemas Solucin de problemas y programacin Analizar el problema (entenderlo) Formular el problema Precisar los resultados esperados Identificar datos disponibles Determinar las restricciones Establecer procesos Disear, traducir y depurar un algoritmo UNIDAD 2: ALGORITMOS, CONCEPTOS BSICOS Qu es un algoritmo? Representacin Simbologa de los diagramas de flujo Reglas para la elaboracin de diagramas de flujo Conceptos bsicos de programacin Variables Constantes Contadores Acumuladores Identificadores Palabras reservadas Funciones matemticas Tipos de datos Operadores Orden de evaluacin de los operadores Expresiones UNIDAD 3: ESTRUCTURAS BSICAS Las estructuras Conceptos bsicos de Logo Fundamentos de Logo Comentarios Procesos Interactividad Procedimientos Estructura secuencial Estructura iterativa (repeticin) Estructura condicional UNIDAD 4: DEPURACIN Cuando se presentan problemas Depuracin Fallas de sintaxis Fallas de lgica Anexo 1: Resumen de comandos de MicroMundos Pro Anexo 2: Esquema de contenidos de esta Gua Anexo 3: Plan de trabajo con Estudiantes Anexo 4: Una propuesta de currculo Bibliografa citada o consultada
EDUCACIN BSICA
ALGORITMOS Y PROGRAMACIN
INTRODUCCIN
SOLUCIN DE PROBLEMAS MEDIANTE LA PROGRAMACIN Existe actualmente un consenso general dentro de la comunidad educativa mundial sobre la necesidad de superar el tipo de enseanza basada en la transmisin de contenidos para apuntarle en su lugar al desarrollo de capacidades. Investigaciones y estudios recientes proponen diversos conjuntos de habilidades que la educacin debe fomentar para que los estudiantes puedan tener xito en el mundo digital y globalizado en el que van a vivir [1]. Este planteamiento exige, sin dilaciones, implementar estrategias que contribuyan efectivamente en el desarrollo de esas habilidades planteadas como fundamentales para la educacin en el Siglo XXI [1]. En la mayora de conjuntos de habilidades propuestos figura la destreza para solucionar problemas; por esta razn, se requiere seleccionar estrategias efectivas para ayudar a que los estudiantes la adquieran. Para atender esta necesidad, la programacin de computadores constituye una buena alternativa, siempre y cuando se la enfoque al logro de esta habilidad y no a la formacin de programadores. Es importante insistir en esta orientacin debido a que las metodologas utilizadas en educacin bsica [2] para realizar cursos de Algoritmos y Programacin, son heredadas de la educacin superior y muchos de los docentes que las utilizan se dedican a ensear los vericuetos de lenguajes orientados a objetos, la mayora de las veces, bajo el paradigma de la programacin estructurada [3]. Hablar hoy de aprender a disear y construir aplicaciones (programas) complejas, implica una labor titnica que est fuera del alcance de la educacin bsica [2] ya que demanda necesariamente un enfoque de programacin orientado a objetos al que apuntan todas las nuevas tendencias en este campo [4]. Por esta razn, en la educacin bsica es recomendable utilizar ambientes de programacin como Logo [5], que aunque no estn orientados a objetos, son fciles de utilizar y permiten realizar procedimientos [6] basados en estructuras bsicas (secuencial, decisin y repeticin), pero siempre conducentes a solucionar problemas. Solo en los ltimos grados de bsica secundaria o en la media [2] sera aconsejable introducir a los estudiantes a la programacin orientada a objetos [4] mediante entornos de programacin visuales y amigables como Alice [7], KPL [8] o Processing [9]. Desde el punto de vista educativo, la programacin de computadores posibilita no solo activar una amplia variedad de estilos de aprendizaje [10] sino desarrollar el pensamiento algortmico. Adicionalmente, compromete a los estudiantes en la consideracin de varios aspectos importantes para la solucin de problemas: decidir sobre la naturaleza del problema, seleccionar una representacin que ayude a resolverlo y, monitorear sus propios pensamientos (metacognicin) y estrategias de solucin. Este ltimo, es un aspecto que deben desarrollar desde edades tempranas. No debemos olvidar que solucionar problemas con ayuda del computador puede convertirse en una excelente herramienta para adquirir la costumbre de enfrentar problemas de manera rigurosa y sistemtica, aun, cuando no se utilice un computador para solucionarlo. PROPUESTA DE LA FUNDACIN GABRIEL PIEDRAHITA URIBE Bajo este enfoque, en los ltimos tres aos lectivos, se ha llevado a cabo un curso de Algoritmos y Programacin con estudiantes de grado 5 en el Instituto Nuestra Seora de la Asuncin (INSA http://www.insa-col.org). Durante este tiempo se han realizado ajustes buscando la mejor forma tanto de secuenciar los contenidos como de abordar la solucin de problemas, en este caso, con el rea de Matemticas. Como resultado de esta experiencia, se ha evidenciado que cuando los estudiantes programadores resuelven problemas matemticos retadores en un ambiente como Logo [5], este pone a prueba la real comprensin que tienen respecto a los conceptos matemticos involucrados en las soluciones. Esto implic que en INSA durante el desarrollo del proyecto, se asegurara que los estudiantes de primaria desarrollaran previamente competencias en comprensin lectora y en los temas bsicos de matemticas con los que iban a trabajar.
Pg.4 - 2-may-07 - Versin 1.0 - Descargue gratuitamente esta Gua: http://www.eduteka.org/AlgoritmosProgramacion.php
El presente trabajo, fruto de ms de tres aos de labor, reflexin, consulta y afinamiento, que ponemos hoy a su disposicin, consta de una Gua dirigida a docentes que tienen a su cargo el rea de Informtica en los grados 5 a 9 y de un Cuaderno de Trabajo enfocado a estudiantes. Estos recogen la experiencia con la que se ha logrado integrar en el INSA la programacin de computadores al desarrollo de habilidades para solucionar problemas. La Gua esta compuesta por cuatro unidades y aunque en INSA se utiliza con estudiantes de grado 5, puede trabajarse con estudiantes de secundaria [2], basta con que el docente ajuste los ejemplos y ejercicios a las capacidades de sus estudiantes. En la primera unidad se introduce un enfoque para educacin bsica orientado hacia la solucin de problemas con ayuda del computador. En ella, se plantean las cuatro fases que componen el ciclo de programacin que a su vez concuerdan con las operaciones mentales descritas por Polya [11] para resolver problemas matemticos: Analizar el problema (entender el problema), Disear un algoritmo (trazar un plan), Traducir el algoritmo a un lenguaje de programacin (ejecutar el plan) y Depurar el programa (revisar). Cabe destacar el marcado nfasis que se hace en la primera fase: Analizar el problema hasta lograr la mejor comprensin posible de este. Para ello, se lo debe formular claramente, especificar los resultados que se desean obtener, identificar la informacin disponible (datos), determinar las restricciones y definir los procesos necesarios para convertir los datos disponibles (materia prima) en la informacin requerida (resultados solicitados). Al anlisis de problemas, los textos universitarios consultados, aunque reconocen su importancia, omiten explicar la forma de trabajarlo en el aula y a esto le dedican nicamente unas pocas pginas. La segunda unidad se concentra en los conceptos bsicos requeridos para llevar a cabo la fase dos: Disear algoritmos que permitan resolver problemas mediante pasos sucesivos y organizados en secuencia lgica (pensamiento algortmico). Se tratan temas como qu es un algoritmo?, formas comunes de representarlos (seudocdigo y diagrama de flujo) y conceptos bsicos de programacin (variable, constante, identificador, palabra reservada, contador, acumulador, tipos de datos, operadores y expresiones). La tercera unidad atiende las fases dos y tres del ciclo de programacin: disear un algoritmo y traducirlo a un lenguaje de programacin. En esta se exponen las tres estructuras de control bsicas conocidas como secuencial, iterativa (repeticin) y condicional (decisin, seleccin). Adicionalmente, se explican los fundamentos de programacin en el rea de procedimientos [6] de MicroMundos Pro (versin de Logo desarrollada por LCSI [12]). La ltima unidad est dedicada a la 4 fase del ciclo de programacin: Depurar procedimientos. Para un estudiante resulta muy difcil elaborar procedimientos [6] perfectos en los primeros intentos y la dificultad aumenta a medida que los problemas se vuelven ms complejos. Despus de traducir el algoritmo a un lenguaje de programacin como Logo, el procedimiento resultante se debe probar y se deben validar los resultados (revisin). Este proceso se conoce como depuracin y desde el punto de vista educativo estimula en los estudiantes la curiosidad, la perspectiva y la comunicacin, adems de promover valores como responsabilidad, fortaleza, laboriosidad, paciencia y perseverancia. Por otra parte, los Anexos de la Gua estn compuestos por el resumen de comandos de MicroMundos Pro que se utilizan en los diferentes ejemplos, un esquema de los temas que se tratan y un plan de trabajo con la secuencia de contenidos para llevar al aula esta Gua, apoyada por una propuesta curricular. Propuesta completa planteada para llevarse a cabo durante un ao escolar y secuenciada de manera que obedezca al orden descrito en el Anexo 3, fruto de la ms reciente experiencia en INSA. Su objetivo final o Alcance es buscar que el estudiante utilice metodologas y estructuras secuenciales, iterativas y condicionales para analizar problemas, disear algoritmos, traducir algoritmos a un lenguaje de programacin y depurar procedimientos sencillos con el fin de solucionar problemas. El objetivo no es que los estudiantes elaboren programas complejos sino que se concentren en la elaboracin de procedimientos utilizando apropiadamente las capacidades mentales que esto implica y en el proceso desarrollndolas. En resumen, el principal objetivo de esta propuesta no consiste en lograr que los estudiantes se conviertan en hbiles programadores, consiste ms bien en darles la oportunidad de ensearle al computador cmo realizar algo mediante procedimientos. En este orden de ideas, los ambientes de aprendizaje enriquecidos con computadores apoyan muy bien el supuesto de que la mejor manera de aprender es ensear (muchos docentes afirman que solo cuando han tenido que explicar un tema a otros es cuando verdaderamente lo han entendido). En estos ambientes, los estudiantes tratan de ensear al computador lo que ellos deben aprender; autores como Arthur Luehrmann y Seymour Papert resaltan que el hecho de tratar de ensear mejora procesos cognitivos y ayuda a desarrollar habilidades de expresin y de solucin de problemas. Una forma de lograr el manejo de estructuras y conceptos bsicos de la programacin es mediante instruccin acompaada de ejemplos abundantes, ejercicios retadores y actividades que requieran la aplicacin de lo aprendido. Esta publicacin tambin incluye un Cuaderno de Trabajo que, adems de ejemplos y actividades dirigidos a estudiantes de grados 5 a 9, contiene algunos de los conceptos bsicos de programacin expuestos en la Gua para que ellos los tengan a mano. Los ejemplos y actividades propuestos en el Cuaderno de Trabajo, corresponden a temas
Pg.5 - 2-may-07 - Versin 1.0 - Descargue gratuitamente esta Gua: http://www.eduteka.org/AlgoritmosProgramacion.php
matemticos sencillos diseados para lograr que los estudiantes aprendan a: analizar un problema, descomponerlo en partes, ordenar lgicamente esas partes, disear un algoritmo que represente una solucin, traducir el algoritmo a un lenguaje de programacin como Logo y verificar la respuesta. Por ltimo y como propuesta de solucin a los escollos que se presentaron en INSA, vale la pena aclarar que la secuencia ptima para presentar los temas de Algoritmos y Programacin a los estudiantes debe tener un orden diferente al expuesto en la Gua. De la misma forma como algunos expertos aconsejan secuenciar la enseanza de las matemticas, la sucesin de contenidos de Programacin se debe planear de acuerdo a una estructura helicoidal, en la que los distintos temas se retomen en distintas ocasiones a lo largo del proceso de aprendizaje, de forma que el estudiante pueda comprender e interiorizar progresivamente dichos contenidos. Por lo tanto, en el Plan de Trabajo (Anexo 3) se sugiere una secuencia que ayudar a evitar que la primera e importante fase del ciclo de programacin, analizar problemas, se convierta en pesada y tediosa para los estudiantes. NOTAS: [1] Ver los documentos: Seis elementos fundamentales para la educacin en el siglo XXI, http://eduteka.org/SeisElementos.php; Estndares educativos en TIC para estudiantes, http://www.eduteka.org/estandaresestux.php3. [2] En Colombia, la Educacin Bsica se divide en Primaria (grados 1 a 5) y Secundaria (grados 6 a 9). La Educacin Media corresponde a los grados 10 y 11. [3] La programacin estructurada surgi a finales de los aos sesenta como un paradigma de programacin que no solamente daba lugar a programas fiables y eficientes, sino que adems facilitaba su comprensin posterior. Consiste en una tcnica de diseo y modelado de aplicaciones informticas por medio de la cual la lgica de un programa se dispone de manera funcional y jerrquica en mdulos lgicos. Adems, los procedimientos y los datos se encuentran separados. El principal inconveniente de este mtodo de programacin, es que se obtiene un bloque nico de programa cuyo manejo puede resultar problemtico si llega a ser demasiado grande. Para solucionar este inconveniente se propone la programacin modular, que permite definir mdulos interdependientes programados que se pueden compilar por separado. [4] La programacin orientada a objetos (POO u OOP segn su sigla en ingls), se basa en que una situacin puede ser moldeada, y los problemas que se presenten en su interior resueltos, mediante la identificacin de los objetos que intervienen en ella y la forma como se comunican entre s. Es un paradigma de programacin que define los programas en trminos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o mtodos) e identidad (propiedad del objeto que lo diferencia del resto). La POO expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y mdulos ms fciles de escribir, mantener y reutilizar. De esta forma, un objeto contiene toda la informacin, (los denominados atributos) que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos). A su vez, dispone de mecanismos de interaccin (los llamados mtodos) que favorecen la comunicacin entre objetos (de una misma clase o de clases distintas), y en consecuencia, el cambio de estado en los propios objetos. Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separan (ni deben separarse) informacin (datos) y procesamiento (mtodos). [5] En palabras de Seymour Papert creador de este lenguaje de programacin, "Logo es un lenguaje de programacin ms una filosofa de educacin" y esta ltima se caracteriza con suma frecuencia como "constructivismo" o "aprendizaje a travs del descubrimiento". Por su parte, Micromundos es una poderosa herramienta multimedia basada en Logo, dirigida a nios de 6 a 12 aos, que permite crear proyectos incorporando pelculas, fotos, sonidos, grficos, textos y animacin. Esto lo convierte en una poderosa herramienta de trabajo para realizar proyectos educativos basados en el constructivismo. [6] En programacin se define Procedimiento como una subrutina o subprograma en forma de algoritmo que permite resolver una tarea especfica. En MicroMundos Pro, los procedimientos contienen instrucciones que se inician con el comando para y que el computador ejecuta automticamente, una tras otra, hasta encontrar el comando fin. Esto demanda que los estudiantes planifiquen, formulen hiptesis y anticipen qu suceder antes de determinar los comandos que conforman un procedimiento para poderlo escribir, ejecutar y comprobar si produce el resultado esperado. De esta manera, Logo promueve lo que Piaget denomin la conquista de la difcil conducta de la reflexin que se inicia a partir de los siete u ocho aos cuando el nio deja de actuar por impulso y empieza a pensar antes de proceder. [7] El Proyecto Alice est enfocado en proveer una herramienta gratuita para iniciar a los estudiantes de educacin bsica secundaria y media en la programacin de computadores. http://www.alice.org/ [8] El Lenguaje de Programacin para Nios (KPL, por sus siglas en ingls Kids Programming Language) permite a los nios aprender a programar un computador de forma sencilla. KPL se puede descargar gratuitamente; es divertido y facilita la programacin de videojuegos con grficas y sonidos. http://www.kidsprogramminglanguage.com/espanol/index.php Ver entrevista a Guillermo Londoo, director del Programa de Ingeniera de Sistemas de la Universidad Icesi, y sus comentarios acerca de la implementacin de un Taller de KPL dirigido a estudiantes de grados 10 y 11. http://www.eduteka.org/EntrevistaGuillermoLondono.php [9] Processing es un lenguaje de programacin gratuito y de cdigo abierto que permite trabajar con imagen, animacin y sonido. Muy utilizado por estudiantes, artistas, diseadores, arquitectos, investigadores y aficionados a la programacin tanto en ambientes de aprendizaje como en la
Pg.6 - 2-may-07 - Versin 1.0 - Descargue gratuitamente esta Gua: http://www.eduteka.org/AlgoritmosProgramacion.php
elaboracin de prototipos. http://www.processing.org/ [10] ver el artculo de Gary Stager En pro de los computadores http://www.eduteka.org/ProComputadores.php [11] Los aportes de George Polya (1887 - 1985) a las matemticas incluyen ms de 250 documentos y tres libros que promueven un acercamiento al conocimiento y al desarrollo de estrategias para la solucin de problemas. Su famoso libro Cmo Plantear y Resolver Problemas, traducido a 15 idiomas, presenta su mtodo de cuatro pasos junto con estrategias especficas tiles en la solucin de problemas. Segn Polya, cuando se resuelven problemas, intervienen cuatro operaciones mentales: 1) Entender el problema, 2) Trazar un plan, 3) Ejecutar el plan (resolver) y 4) Revisar. [12] LCSI, empresa ubicada en Montreal (Canad), desarrolla programas para la enseanza en el mtodo educativo-constructivo del lenguaje Logo como MicroMundos. LCSI rene un grupo interdisciplinario que incluye diseadores, maestros, ingenieros de sistemas y escritores para que desarrollen productos basados en la filosofa del aprendizaje constructivista de Logo. Es miembro primordial de este grupo el Dr. Seymour Papert, fundador del Laboratorio de Inteligencia Artificial del Instituto Tecnolgico de Massachusetts y principal creador del lenguaje Logo. http://www.micromundos.com/
AGRADECIMIENTOS
El autor agradece muy especialmente al padre Francisco Amico, rector del Instituto Nuestra Seora de la Asuncin (INSA http://www.insa-col.org), por el apoyo decidido a la realizacin durante varios aos consecutivos del curso de Algoritmos y Programacin con estudiantes de grado 5. Igualmente agradece a Liliana Ceballos y a Willy Figueroa, docentes de Informtica en INSA, por su inters y dedicacin cuando han dirigido este curso en dicho grado. Adems, desea agradecer y destacar la comprometida y desinteresada labor de Luz Helena Jimnez Collazos, profesora de Algoritmos y Programacin en la Universidad Icesi, al revisar este documento y aportar valiosos comentarios al mismo.
cuando el problema que se desea resolver no requiere informacin adicional, sino un reordenamiento de la informacin disponible; cuando hay ausencia del problema y es necesario apercibirse de que hay un problema; o cuando se debe reconocer la posibilidad de perfeccionamiento y redefinir esa posibilidad como un problema (De Bono, 1970). Como se puede apreciar, hay muchas estrategias para solucionar problemas. Segn Polya (1957), cuando se resuelven problemas, intervienen cuatro operaciones mentales: 1. Entender el problema 2. Trazar un plan 3. Ejecutar el plan (resolver) 4. Revisar Numerosos autores de textos escolares de matemticas hacen referencia a estas cuatro etapas planteadas por Polya. Sin embargo, es importante notar que estas son flexibles y no una simple lista de pasos como a menudo se plantea en muchos de esos textos (Wilson, Fernndez & Hadaway, 1993). Cuando estas etapas se siguen como un modelo lineal, resulta contraproducente para cualquier actividad encaminada a resolver problemas.
problema matemtico: 1. COMPRENDER EL PROBLEMA. Leer el problema varias veces Establecer los datos del problema Aclarar lo que se va a resolver (Cul es la pregunta?) Precisar el resultado que se desea lograr Determinar la incgnita del problema Organizar la informacin Agrupar los datos en categoras Trazar una figura o diagrama. 2. HACER EL PLAN. Escoger y decidir las operaciones a efectuar. Eliminar los datos intiles. Descomponer el problema en otros ms pequeos. 3. EJECUTAR EL PLAN (Resolver). Ejecutar en detalle cada operacin. Simplificar antes de calcular. Realizar un dibujo o diagrama 4. ANALIZAR LA SOLUCIN (Revisar). Dar una respuesta completa Hallar el mismo resultado de otra manera. Verificar por apreciacin que la respuesta es adecuada. EJEMPLO En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una amarilla. Al final de varias rondas, el puntaje se calcula de la siguiente manera: Al cubo de la cantidad de fichas rojas se adiciona el doble de fichas azules y se descuenta el cuadrado de las fichas amarillas. Si Andrs lleg 3 veces en primer lugar, 4 veces de ltimo y 6 veces de intermedio, Qu puntaje obtuvo? (Adaptado de Melo (2001), pgina 30). R/. COMPRENDE Leer detenidamente el problema Cuntos colores de fichas se reparten? Cuntas fichas rojas, azules y amarillas obtuvo Andrs? Qu pregunta el problema? PLANEA Para hallar el puntaje que obtiene Andrs por sus llegadas de primero, calcular el cubo de la cantidad de fichas rojas. Para hallar el puntaje por sus llegadas en segundo lugar, calcular el doble de la cantidad de fichas azules. Para hallar el puntaje que pierde por sus llegadas en ltimo lugar, calcular el cuadrado de la cantidad de fichas amarillas. Para hallar el puntaje total, calcular la suma de los puntajes por las fichas rojas y azules, restarle los puntos de las fichas amarillas. RESUELVE Por tres fichas rojas: 33 = 27 puntos Por seis fichas azules: 6 x 2 = 12 puntos Por cuatro fichas amarillas: 42 = 16 puntos Para obtener el puntaje final de Andrs, sumar los puntos obtenidos con las fichas rojas y azules (27 + 12 = 39 puntos) y de este resultado restar los puntos representados por las fichas amarillas (39 16 = 23 puntos). REVISA El puntaje que obtuvo Andrs es 23 puntos. Verificar las operaciones y comparar los clculos con la solucin estimada.
Ilustracin 1-1: Interpretacin dinmica y cclica de las etapas planteadas por Polya para resolver problemas. Es necesario hacer nfasis en la naturaleza dinmica y cclica de la solucin de problemas. En el intento de trazar un plan, los estudiantes pueden concluir que necesitan entender mejor el problema y deben regresar a la etapa anterior; o cuando han trazado un plan y tratan de ejecutarlo, no encuentran cmo hacerlo; entonces, la actividad siguiente puede ser intentar con un nuevo plan o regresar y desarrollar una nueva comprensin del problema (Wilson, Fernndez & Hadaway, 1993; Guzdial, 2000). TIP La mayora de los textos escolares de matemticas abordan la Solucin de Problemas bajo el enfoque planteado por Polya. Por ejemplo, en Recreo Matemtico 5 (Daz, 1993) y en Dominios 5 (Melo, 2001) se pueden identificar las siguientes sugerencias propuestas a los estudiantes para llegar a la solucin de un
El anterior es un problema tpico en clase de matemticas. Es muy importante que los estudiantes reflexionen sobre las actividades que realizan para solucionarlo (metacognicin) y las agrupen de acuerdo a las etapas que contenga la estrategia de solucin empleada. ACTIVIDAD En la academia de las ciencias sociales hay dos grupos de materias: Geografa, con 124 alumnos; Historia, con 220; y Educacin Ambiental, con 185. Si hay 25 alumnos que estudian Geografa y Educacin Ambiental, 37 que estudian Educacin Ambiental e Historia, y ninguno toma las tres materias, cuntos alumnos tiene la academia? (Adaptado de Melo, 2001, pgina 46). El estudiante debe tener en cuenta (y anotar) las actividades que realiza para resolver este problema y agruparlas en cada una de las cuatro etapas propuestas por Polya (comprende, planea, resuelve y revisa). Para resolver este problema, los estudiantes deben tener conocimientos sobre conjuntos (representacin, clasificacin e interseccin). Es buena idea que construyan una tabla para organizar la informacin y un diagrama de Venn para representar los datos. Establecer un modelo para solucionar problemas es un paso fundamental pero no suficiente. Segn Clements & Meredith (1992) y Zemelman, Daniels & Hyde (1998) y otros, los docentes deben adoptar una serie de buenas prcticas con el fin de ayudar a los estudiantes a desarrollar habilidades para resolver problemas: Plantear verbalmente problemas con variedad de estructuras y de formas de solucin. Presentar diversas estrategias de solucin de problemas. Asignar problemas que tengan aplicacin en la vida diaria. Ofrecer experiencias que estimulen la curiosidad de los estudiantes y construyan confianza en la investigacin, la solucin de problemas y la comunicacin. Permitir a los estudiantes tomar la iniciativa en el planteamiento de preguntas e investigaciones que les interesen. Hacer preguntas que involucren pensamiento de orden superior. Verificar que los estudiantes son conscientes de las estrategias que deben utilizar y de los procesos que deben aprender. Plantear problemas que proporcionen contextos en los que se aprendan conceptos y habilidades. Proveer ejemplos de cmo los conceptos y habilidades utilizados podran aplicarse en otros contextos. Promover, de manera creciente, la abstraccin y la generalizacin mediante la reflexin y la experimentacin. Fomentar la utilizacin de representaciones visuales
que favorezcan la comprensin de conceptos (diagramas de flujo, mapas conceptuales, diagramas de Venn, etc). Dar retroalimentacin personalizada en consideracin al esfuerzo hecho por los estudiantes para solucionar problemas. Verificar que una cantidad importante de la instruccin ocurra en grupos pequeos o en situaciones de uno a uno. Ventilar los errores y malentendidos ms comunes. Promover la interaccin tanto estudiante-docente, como estudiante-estudiante. Los nios son los mejores maestros de otros nios en cosas tan importantes para ellos como el aprendizaje de diversos juegos (Savater, 1996). Ofrecer actividades que den oportunidad a los estudiantes de discutir, hacer conjeturas, sacar conclusiones, defender ideas y escribir conceptualizaciones. Proporcionar oportunidades para realizar trabajo reflexivo y colaborativo entre estudiantes.
Ilustracin 1-2: rea de trabajo de MicroMundos Pro (interfaz del programa) Quienes han utilizado Logo con estudiantes de bsica primaria (especialmente con grados 3 a 5 - 8 a 11 aos) habrn podido observar la facilidad con que ellos se familiarizan con la interfaz del programa y la utilizan para darle instrucciones a la tortuga. Por ejemplo, utilizan el centro de mando (rea de comandos) para introducir manualmente, una a una, las instrucciones para construir un rectngulo. Esta forma de utilizar Logo promueve la exploracin y permite al estudiante ver inmediatamente cul es el efecto que produce cada instruccin ejecutada. EJEMPLO Pedir a los estudiantes que escriban en el Centro de Mando las instrucciones para dibujar un rectngulo con las siguientes medidas: Lado1= 80; Lado2=120. MicroMundos Pro adelante 80 derecha 90 adelante 120 derecha 90 adelante 80 derecha 90 adelante 120
esta manera, empiezan a construir conocimiento intuitivo acerca de la definicin de esta figura geomtrica, conocimiento que luego pueden formalizar en una definicin abstracta de la misma (Clements & Meredith, 1992). Adicionalmente, la programacin de computadores compromete a los estudiantes en varios aspectos importantes de la solucin de problemas: decidir sobre la naturaleza del problema, seleccionar una representacin que les ayude a resolverlo, y monitorizar sus propios pensamientos (metacognicin) y estrategias de solucin. Este ltimo, es un aspecto que ellos deben desarrollar desde edades tempranas y solucionar problemas con ayuda del computador puede convertirse en una excelente herramienta para adquirir la costumbre de tratar cualquier problema de manera rigurosa y sistemtica, aun, cuando no se vaya a utilizar un computador para solucionarlo. De hecho, para muchos educadores, el uso apropiado de la tecnologa en la educacin tiene un significado similar a la solucin de problemas matemticos. La programacin de computadores para llevar a cabo tareas matemticas retadoras puede mejorar la comprensin del estudiante programador sobre las matemticas relacionadas con una solucin. Esto implica abrirle un espacio a la programacin en el estudio de las matemticas, pero enfocndose en los problemas matemticos y en el uso del computador como una herramienta para solucionar problemas de esta rea (Wilson, Fernndez & Hadaway, 1993). Numerosos autores de libros sobre programacin, plantean cuatro fases para elaborar un procedimiento que realice una tarea especfica. Estas fases concuerdan con las operaciones mentales descritas por Polya para resolver problemas: 1. Analizar el problema (Entender el problema) 2. Disear un algoritmo (Trazar un plan) 3. Traducir el algoritmo a un lenguaje de programacin (Ejecutar el plan) 4. Depurar el programa (Revisar)
Como se puede apreciar, hay una similitud entre las metodologas propuestas para solucionar problemas matemticos (Clements & Meredith, 1992; Daz, 1993; Melo, 2001; NAP, 2004) y las cuatro fases para solucionar problemas especficos de reas diversas, mediante la programacin de computadores. Es muy importante tener presente que resolver problemas matemticos mediante procedimientos tiene dos ciclos: uno en el cual se resuelve el problema matemtico en s (con papel y lpiz) y otro en el que esa solucin se automatiza en el computador. Crear un procedimiento para calcular el rea de cualquier rectngulo a partir de las dimensiones de sus lados, requiere que el estudiante primero resuelva el problema matemtico (entender el problema, trazar un plan, ejecutar el plan y revisar) y luego elabore el procedimiento que pida los datos de entrada, realice los clculos y muestre el resultado (analizar el problema, disear un algoritmo, traducir el algoritmo a un lenguaje de programacin y depurar el programa).
Formular el problema
La solucin de un problema debe iniciar por determinar y comprender exactamente en qu consiste ese problema. La mayora de los problemas que se resuelven en el aula de clase llegan a manos de los estudiantes perfectamente formulados. Esta etapa es una buena oportunidad para plantear situaciones en forma verbal o escrita que vinculen la enseanza de las matemticas con el entorno en el que vive el estudiante y que tengan una variedad de estructuras y de formas de solucin (Zemelman, Daniels & Hayde, 1998). Esta metodologa obliga al estudiante a formular el problema a partir de la situacin real planteada. De esta manera se contrarresta la costumbre tan comn en el aula de que los problemas sean formulados por el profesor o tomados de los libros de texto (Brown & Walter, 1990). EJEMPLO OPCIN 1: Juan Felipe es jefe de bodega en una fabrica de paales desechables y sabe que la produccin diaria es de 744 paales y que en cada caja donde se empacan para la venta caben 12 paales. Cuntas cajas debe conseguir Juan Felipe para empacar los paales fabricados en una semana? OPCIN 2: Juan Felipe es jefe de bodega en una fabrica de paales desechables y una de las tares del da consiste en llamar al proveedor de los empaques y ordenarle la cantidad suficiente de cajas para empacar los paales fabricados en la semana prxima. El jefe de produccin le inform ayer a Juan Felipe que la produccin diaria ser de 744 paales y en cada caja cabe una docena de ellos. Qu debe hacer Felipe? La Opcin 1 plantea directamente el problema que el estudiante debe resolver. Mientras que la Opcin 2 plantea una situacin y la pregunta es Qu debe hacer Felipe?. La Opcin 2 demanda al estudiante leer muy bien el texto para comprender la situacin y as poder formular el problema de Juan Felipe. Es algo similar a preguntar al estudiante cunto es 7 menos 3 versus preguntar s Rosa tiene 7 naranjas y Julio tiene 3, cuntas naranjas de ms tiene Rosa. La comprensin lingstica del problema (entender el significado de cada enunciado) es muy importante. El estudiante debe realizar una lectura previa del problema con el fin de obtener una visin general de lo que se le pide y una segunda lectura para poder responder preguntas como: Puedo definir mejor el problema? Qu palabras del problema me son desconocidas? Cules son las palabras clave del problema?
Ilustracin 1-4: Primera fase del ciclo de programacin. Los programas de computador tienen como finalidad resolver problemas especficos y el primer paso consiste en definir con precisin el problema hasta lograr la mejor comprensin posible. Una forma de realizar esta actividad se basa en formular claramente el problema, especificar los resultados que se desean obtener, identificar la (datos), informacin disponible determinar las restricciones y definir los procesos necesarios para convertir los datos disponibles (materia prima) en la informacin requerida (resultados). Estas etapas coinciden parcialmente con los elementos generales que, segn Schunk (1997), estn presentes en todos los problemas: 1. Especificar claramente los resultados que se desean obtener (meta y submetas) 2. Identificar la informacin disponible (estado inicial) 3. Definir los procesos que llevan desde los datos disponibles hasta el resultado deseado (operaciones)
Ilustracin 1-5: Etapas a desarrollar en la fase de anlisis de un problema (entenderlo) Para establecer un modelo que los estudiantes puedan utilizar en la fase de anlisis del problema, debemos agregar dos temas a los elementos expuestos por Schunk (1997): formular el problema y determinar las
He resuelto antes algn problema similar? Qu informacin es importante? Qu informacin puedo omitir? Adems, es conveniente que los estudiantes se habiten a analizar los problemas desde diferentes puntos de vista y a categorizar la informacin dispersa que reciben como materia prima (Schunk, 1997). En programacin es frecuente que quien programa deba formular el problema a partir de los resultados esperados. Es muy importante que el estudiante sea consciente de que cuando las especificaciones de un programa se comunican mediante lenguaje natural, estas pueden ser ambiguas, incompletas e incongruentes. En esta etapa se debe hacer una representacin precisa del problema (Rumbaugh, 1996); especificar lo ms exactamente posible lo que hay que hacer (no cmo hay que hacerlo). EJEMPLO Doa Ruby necesita decidir cmo comprar un televisor que cuesta 850.000 de contado o 960.000 a crdito. Ella tiene 600.000 pesos en efectivo. R/. Como el efectivo que tiene doa Ruby no le alcanza para comprar el televisor de contado, ella tiene dos opciones: comprarlo totalmente a crdito o pagar una parte de contado (cuota inicial) y el resto a crdito. Para poder resolver el problema se debe conocer el nmero de cuotas si desea pagarlo totalmente a crdito o conocer el nmero de cuotas y el valor total del televisor si se da una cuota inicial de 600.000 pesos.
problema? (datos desconocidos) Puedo agrupar los datos en categoras? Otro aspecto importante del estado inicial hace referencia al nivel de conocimiento que el estudiante posee en el mbito del problema que est tratando de resolver. Es conveniente que el estudiante se pregunte a s mismo: Qu conocimientos tengo en el rea o reas del problema? Son suficientes esos conocimientos? Dnde puedo obtener el conocimiento que necesito para resolver el problema? Mis compaeros de estudio me pueden ayudar a clarificar mis dudas? Qu expertos en el tema puedo consultar? En el mbito de las matemticas, se conoce como conocimiento condicional a aquel que activan los estudiantes cuando aplican procedimientos matemticos concretos de manera intencional y consciente a ciertas situaciones. El conocimiento condicional proporciona al alumno un sistema de valoracin sobre la extensin y las limitaciones de su saber (qu sabe sobre el tema, su capacidad de memoria, etc), a la vez que examina la naturaleza de la demanda del profesor y su objetivo ltimo, y evala variables externas como pueden ser el tiempo que tiene o con quin realiza la tarea (Orubia & Rochera & Barber, 2001). EJEMPLO Esteban est ahorrando para comprar una patineta que vale 55.000 pesos. Su pap le ha dado una mesada de 5.000 pesos durante 7 semanas. Por lavar el auto de su to tres veces recibi 8.000 pesos. Su hermano gan 10.000 pesos por hacer los mandados de su mam y 4.000 por sacar a pasear el perro. Esteban tiene ahorrado el dinero suficiente para comprar la patineta o an le falta? (Adaptado de Casasbuenas & Cifuentes (1998b), pgina 23). R/. Formular el problema: Ya se encuentra claramente planteado. Resultados esperados: Si o no tiene Esteban ahorrado el dinero suficiente para comprar una patineta que vale 55.000 pesos. Datos disponibles: Los ingresos de Esteban: 5.000 pesos por 7 semanas + 8.000 pesos. Los 10.000 y 4.000 pesos qu gan el hermano de Esteban son irrelevantes para la solucin de este problema y se pueden omitir.
Establecer procesos (operaciones) Consiste en determinar los procesos que permiten llegar a los resultados esperados a partir de los datos disponibles. El estudiante debe preguntarse: Qu procesos necesito? Qu frmulas debo emplear? Cmo afectan las condiciones a los procesos? Qu debo hacer? Cul es el orden de lo que debo hacer?
En la medida de lo posible, es aconsejable dividir el problema original en otros ms pequeos y fciles de solucionar (submetas), hasta que los pasos para alcanzarlas se puedan determinar con bastante precisin (mdulos). Esto es lo que en programacin se denomina diseo descendente o top-down (Joyanes, 2001). El diseo descendente se utiliza en la programacin estructurada de computadores debido a que facilita: La comprensin del problema Las modificaciones en los mdulos La verificacin de la solucin Al realizar divisiones sucesivas del problema en otros ms pequeos y manejables (mdulos), hay que tener cuidado para no perder de vista la comprensin de este como un todo. El estudiante, luego de dividir el problema original en submetas (mdulos), debe integrar cada parte de tal forma que le permita comprender el problema como un todo (Woolfolk, 1999). Igualmente hay que tener cuidado cuando se utiliza este enfoque para resolver problemas complejos o extensos, en cuyo caso resulta ms aconsejable utilizar una metodologa orientada a objetos. Especialmente, cuando profesores universitarios manifiestan su preocupacin por el aprendizaje de malas prcticas de programacin en el colegio. Hay casos en los cuales algunos estudiantes no han podido cambiar su forma de pensar estructurada por otra orientada a objetos, la cual hace parte de los programas universitarios modernos en la carrera de Ingeniera de Sistemas. Es aconsejable que los ejemplos y actividades planteados a los estudiantes contengan solo un problema cuya solucin sea muy corta (no necesariamente sencillo de resolver). De esta forma ellos podrn enfocarse en aplicar completamente la metodologa propuesta para analizar problemas (formular el problema, especificar los resultados, identificar la informacin disponible, determinar las restricciones y definir los procesos) sin perderse en el laberinto de un problema demasiado complejo. Las operaciones para llegar a los resultados esperados se implementan en Logo mediante procedimientos. Por ejemplo, si se desea producir un software para trabajar con figuras geomtricas de diferentes tipos, el tringulo rectngulo ser uno de los objetos a tener en cuenta y este a su vez, debe prestar los siguientes servicios (Jimnez, 2002): 1. Un procedimiento para leer los datos de
2. 3. 4. 5.
entrada. Un procedimiento para calcular el rea. Un procedimiento para calcular la hipotenusa. Un procedimiento para calcular el permetro. Un procedimiento para mostrar los resultados.
Ilustracin 1-6: Descripcin de los servicios que debe estar en capacidad de prestar el objeto tringulo rectngulo. EJEMPLO De acuerdo con la metodologa descrita, analizar el problema de hallar el rea de un tringulo rectngulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5 cm. R/ Formular el problema: Ya se encuentra claramente planteado. Resultados esperados: El rea de un tringulo rectngulo. Datos disponibles: Base, Altura, Hipotenusa, tipo de tringulo. La incgnita es el rea y todos los valores son constantes. El valor de la hipotenusa se puede omitir. El estudiante debe preguntarse si sus conocimientos actuales de matemticas le permiten resolver este problema; de no ser as, debe plantear una estrategia para obtener los conocimientos requeridos. Determinar las restricciones: Utilizar las medidas dadas. Procesos necesarios: Guardar en dos variables los valores de Base y Altura; Guardar en una constante el divisor 2; aplicar la frmula rea=base*altura/2; comunicar el resultado (rea). ACTIVIDAD La mayora de las metodologas propuestas para la solucin de problemas matemticos se aproxima al ciclo de programacin de computadores. Se puede iniciar planteando a los estudiantes problemas matemticos como los siguientes, encontrados en Casasbuenas & Cifuentes (1998b): 1. Luisa quiere invertir sus ahorros en la compra de discos compactos de moda. Si tiene $68.000, Cuntos discos comprar? Analizar el problema: Qu tienes en cuenta cuando vas a comprar un disco? Tienes informacin suficiente para resolver el problema de Luisa? Qu dato averiguaras para saber cuntos discos puede comprar Luisa? Plantear ahora este problema utilizando la metodologa de Formular el problema, Resultados esperados, Datos disponibles, Determinar las restricciones y Procesos necesarios. TIP
Cinco pasos que deben tener en cuenta los estudiantes para resolver problemas matemticos (Rodrguez, 1995): 1. Leer con mucho cuidado el problema hasta entenderlo. 2. Buscar la(s) pregunta(s). 3. Decidir lo que debes hacer. 4. Realizar las operaciones. 5. Comprobar que la respuesta hallada es correcta. Pida a los estudiantes que contesten las siguientes preguntas en el proceso de solucin de problemas matemticos: Cuntas preguntas tiene el problema? Cules? Qu debes hacer primero? Para qu? Qu debes hacer luego? Para qu? Cul debe ser la respuesta (estimada) del problema? ACTIVIDAD Basndose en la metodologa expuesta en esta unidad, dividir a los estudiantes en grupos y distribuir entre ellos la tarea de anlisis detallado (Formular el problema, Resultados esperados, Datos disponibles, Determinar las restricciones y Procesos necesarios) de los siguientes problemas (uno por grupo): 1. Hallar el rea de un cuadrado cuyo lado mide 5 cm. 2. Hallar uno de los lados de un rectngulo cuya rea es de 15 cm2 y uno de sus lados mide 3 cm. 3. Hallar el rea y el permetro de un crculo cuyo radio mide 2 cm. 4. Hallar el rea de un pentgono regular de 6 cm de lado y con 4 cm de apotema.
Dato Curioso
Deep Blue de IBM fue el primer computador que super a un campen mundial de ajedrez cuando le gan una partida a Gary Kasparov en febrero de 1996. La victoria de Deep Blue formaba parte de una serie de seis partidas, que Kasparov termin ganando 4-2. En 1997, una versin nueva y mejorada de Deep Blue contraatac en una segunda serie. Esta vez, el computador, capaz de planear una vertiginosa cantidad de 200 millones de posiciones por segundo, gan la serie a Kasparov por 3.5 a 2.5 puntos. (Libro
DISEAR DEL ALGORITMO (TRAZAR UN PLAN) TRADUCIR EL ALGORITMO (EJECUTAR EL PLAN) DEPURAR EL PROGRAMA (REVISAR)
Disear del algoritmo (trazar un plan) Este tema se tratar en profundidad en las unidades 2 y 3 de esta gua. Por el momento, podemos resumir que nicamente hasta cuando se ha realizado un anlisis a fondo del problema (utilizando alguna metodologa), se puede proceder a elaborar el algoritmo (diagrama de flujo). Este consiste en la representacin grfica, mediante smbolos geomtricos, de la secuencia lgica de las instrucciones (plan) que posteriormente sern traducidas a un lenguaje de programacin, como Logo, para ejecutarlas y probarlas en un computador.
EJEMPLO Disear un algoritmo (seudocdigo y diagrama de flujo) para hallar el rea de un tringulo rectngulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5 cm. R/ ANLISIS DEL PROBLEMA Formular el problema: Ya se encuentra claramente planteado. Resultados esperados: El rea de un tringulo rectngulo. Datos disponibles: Base, Altura, Hipotenusa, tipo de tringulo. La incgnita es el rea y todos los valores son constantes. El valor de la hipotenusa se puede omitir. El estudiante debe preguntarse si sus conocimientos actuales de matemticas le permiten resolver este problema; de no ser as, debe plantear una estrategia para obtener los conocimientos requeridos. Determinar las restricciones: Utilizar las medidas dadas. Procesos necesarios: Guardar en dos variables (BASE y ALTURA) los valores de Base y Altura; Guardar en una constante (DIV) el divisor 2; aplicar la frmula BASE*ALTURA/DIV y guardar el resultado en la variable AREA; comunicar el resultado (AREA). ALGORITMO EN SEUDOCDIGO Paso 1: Inicio Paso 2: Asignar el nmero 2 a la constante "div" Paso 3: Asignar el nmero 3 a la constante base Paso 4: Asignar el nmero 4 a la constante altura Paso 5: Guardar en la variable "rea" el resultado de base*altura/div Paso 6: Imprimir el valor de la variable "rea" Paso 7: Final
ALGORITMO EN DIAGRAMA DE FLUJO Ilustracin 1-8: Diagrama de Flujo para hallar el rea de un tringulo rectngulo.
Traducir el algoritmo (ejecutar el plan) Este tema se tratar en profundidad en las Unidades 3 y 4 de esta gua. Una vez que el algoritmo est diseado y representado grficamente se pasa a la etapa de traduccin a un lenguaje de programacin determinado (en nuestro caso ser Logo). Cada lenguaje posee sus propias reglas gramaticales, por lo tanto es fundamental que los estudiantes conozcan de antemano la sintaxis de los comandos que deben utilizar para resolver el problema. A mayor dominio del lenguaje de programacin, mayor posibilidad de llegar rpidamente a una solucin satisfactoria. A esta fase de traduccin se le conoce comnmente como codificacin.
EJEMPLO A partir del ejemplo anterior, escribir un procedimiento en Logo que se llame tringulo para hallar el rea de un tringulo rectngulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5 cm. R/ MicroMundos Pro para tringulo local "div local "base local "altura local "rea da "div 2 da "base 3 da "altura 4 da "rea :base * :altura / :div muestra :rea fin Escribir ahora en el centro de mando de MicroMundos la palabra tringulo y debe obtener como resultado 6.
Depurar el programa (revisar) Este tema se tratar en profundidad en la Unidad 4 de esta gua. Despus de traducir el algoritmo en un lenguaje de programacin como Logo, el programa resultante debe ser probado y validados los resultados. A este proceso se le conoce como depuracin. Depurar programas contribuye a mejorar la capacidad en los estudiantes para resolver problemas; la depuracin basada en la retroalimentacin es una habilidad til para toda la vida (Stager, 2003).
Quienes han escrito alguna vez un programa de computador, saben de la dificultad que representa elaborar programas perfectos en el primer intento, dificultad que aumenta a medida que el problema a resolver es ms complejo. La depuracin, afinamiento y documentacin de un programa hacen parte fundamental del ciclo de programacin y desde el punto de vista educativo estimula en los estudiantes la curiosidad, la perspectiva, la comunicacin y promueve valores como responsabilidad, fortaleza, laboriosidad, paciencia y perseverancia. La programacin facilita un dilogo interior en el cual la retroalimentacin constante y el xito gradual empujan a los alumnos a ir ms all de sus expectativas (Stager, 2003). Otras dos actividades relacionadas con esta etapa son la afinacin y la documentacin. La primera consiste en realizar retoques para lograr una mejor apariencia del programa (en pantalla o en los resultados impresos) o para ofrecer funcionalidades ms all de los resultados esperados (especificados en la fase de anlisis del problema). La segunda tiene un carcter eminentemente comunicativo, con la documentacin de un programa se pone a prueba la capacidad del estudiante para informar a otras personas cmo funciona su programa y lo que significa cada elemento utilizado. EJEMPLO Complementar la solucin del problema de hallar el rea de un tringulo rectngulo cuya Base mide 3 cm, la Altura 4 cm y la Hipotenusa 5 cm. R/ La base y la altura son suficientes para calcular el rea de un tringulo rectngulo (resultado esperado), pero adicionalmente se puede calcular el permetro (afinacin), aplicando la frmula: permetro=Base+Altura+Hipotenusa Incluso, en caso que el enunciado del problema no hubiese indicado el valor de la Hipotenusa, si se poseen los suficientes conocimientos de geometra, se puede calcular el valor de esta a partir de la Base, la Altura y la condicin de ser un tringulo rectngulo:
el que dos naves alrededor de una estrella central deban derribarse entre ellas. Programado como diversin por estudiantes del MIT , este juego fue el precursor de todos los videojuegos modernos. El computador PDP-1 se puso a la venta en 1960 y costaba 120.000 dlares (el equivalente a 930.000 dlares actuales) y en total se vendieron 50 unidades. El PDP-1 es el antepasado del computador personal actual y se concibi para su uso en instituciones cientficas. Dispona de una memoria de 4Kb y los operadores empleaban un teclado y cinta de papel perforado para la introduccin de datos. (Libro Guinness de los Records, 2002)
Dato Curioso
Spacewar es el primer videojuego del mundo. Se empez a utilizar en 1961 en el Massachusetts Institute of Technology (MIT) en un computador PDP-1. Se trataba de un juego de combate espacial en
Ilustracin 2-1: Segunda fase del ciclo de programacin. Luego de analizar detalladamente el problema hasta entenderlo completamente, se procede a disear un algoritmo (trazar un plan) que lo resuelva por medio de pasos sucesivos y organizados en secuencia lgica. El concepto intuitivo de algoritmo (procedimientos y reglas) se puede encontrar en procesos naturales de los cuales muchas veces no se es conciente. Por ejemplo, el proceso digestivo es un concepto intuitivo de algoritmo con el que se convive a diario sin que haga falta un definicin matemtica del mismo. Tener claro el proceso digestivo, no implica que los alimentos consumidos nutran ms. La familiaridad de lo cotidiano impide a las personas ver muchos algoritmos que se suceden a su alrededor. Procesos, rutinas o biorritmos naturales como la gestacin, las estaciones, la circulacin sangunea, los ciclos csmicos, etc, son algoritmos naturales que generalmente pasan desapercibidos. La rama del saber que mayor utilizacin ha hecho del enfoque algortmico es las matemticas. Durante miles de aos el ser humano se ha esforzado por abstraer la estructura de la solucin de problemas con el fin de determinar claramente cul es el camino seguro, preciso y rpido que lleva a esas soluciones. Son abundantes los ejemplos: mximo comn divisor, teorema de Pitgoras, reas de figuras geomtricas, divisin, suma de nmeros fraccionarios, etc. Todos estos algoritmos matemticos independizan los datos iniciales del problema de la estructura de su solucin, lo que permite su aplicacin con diferentes conjuntos de datos iniciales (variables). EJEMPLO Consideremos el algoritmo de Euclides para hallar el Mximo Comn Divisor (MCD) de dos nmeros enteros positivos dados. Obsrvese que no se especifica cules son los dos nmeros, pero si se establece claramente una restriccin: deben ser enteros y positivos. ALGORITMO EN SEUDOCDIGO Paso 1: Inicio.
Dato Curioso
La palabra Algoritmo tiene su origen en el nombre del matemtico Persa "Mohamed ibn Musa al Khwarizmi" (825 d.C.). Su apellido fue traducido al latn como Algorismus y posteriormente paso al espaol como Algoritmo. Khwarizmi fue bibliotecario en la corte del califa alMamun y astrnomo en el observatorio de Bagdad. Sus trabajos de lgebra, aritmtica y tablas astronmicas adelantaron enormemente el pensamiento matemtico y fue el primero en utilizar la expresin al-yabr (de la que procede la palabra lgebra). Su trabajo con los algoritmos introdujo el mtodo de clculo utilizando la numeracin arbiga y la notacin decimal. En el mbito de la computacin, los Algoritmos son una herramienta que permite describir claramente un conjunto finito de instrucciones, ordenadas secuencialmente y libres de ambigedad, que debe llevar a cabo un computador para lograr un resultado previsible. Vale la pena recordar que un programa de computador consiste de una serie de instrucciones muy precisas y escritas en un lenguaje de programacin que el computador entiende (Logo, Java, Pascal, etc). En resumen, un Algoritmo es una secuencia ordenada de instrucciones, pasos o procesos que llevan a la solucin de un determinado problema. Los hay tan
sencillos y cotidianos como seguir la receta del mdico, abrir una puerta, lavarse las manos, etc; hasta los que conducen a la solucin de problemas muy complejos. EJEMPLO El ejemplo de cambiar una bombilla fundida es uno de los ms utilizados por su sencillez para mostrar los pasos de un Algoritmo: 1. Ubicar una escalera debajo de la bombilla fundida 2. Tomar una bombilla nueva 3. Subir por la escalera 4. Girar la bombilla fundida hacia la izquierda hasta soltarla 5. Enroscar la bombilla nueva en el plafn hasta apretarla 6. Bajar de la escalera 7. Fin En trminos generales, un Algoritmo debe ser: Realizable: El proceso algortmico debe terminar despus de una cantidad finita de pasos. Se dice que un algoritmo es inaplicable cuando se ejecuta con un conjunto de datos iniciales y el proceso resulta infinito o durante la ejecucin se encuentra con un obstculo insuperable sin arrojar un resultado. Comprensible: Debe ser claro lo que hace, de forma que quien ejecute los pasos (ser humano o mquina) sepa qu, cmo y cundo hacerlo. Debe existir un procedimiento que determine el proceso de ejecucin. Preciso: El orden de ejecucin de las instrucciones debe estar perfectamente indicado. Cuando se ejecuta varias veces, con los mismos datos iniciales, el resultado debe ser el mismo siempre. La precisin implica determinismo. Un aspecto muy importante sobre el cual los estudiantes deben reflexionar es la ambigedad del lenguaje natural que utilizan para comunicarse diariamente con sus semejantes. La informalidad o formalidad en la comunicacin depende de elementos como vocabulario, uso de comodines en lugar de vocablos precisos, uso de adverbios coloquiales en lugar de adverbios formales, etc. Es muy importante que los estudiantes aprendan a diferenciar entre comunicacin informal y comunicacin formal, cuya principal caracterstica es la precisin. Los algoritmos no admiten ningn tipo de ambigedad ya que los computadores no podran ejecutarlos. ACTIVIDAD Discutir en parejas el ejemplo de la bombilla y proponer algunas mejoras. Luego, un voluntario pasa al tablero y escribe un Algoritmo con participacin de toda la clase.
escape a travs de la casa del rbol y recorrerla en la menor cantidad de movimientos posibles. Para despejar el camino de objetos hay que seguir las reglas del juego y si no se mueven los objetos precisos, en la direccin correcta y en el orden adecuado, el camino se puede bloquear.
2 3
Ilustracin 2-2: Comienzo del nivel tres del juego Misin Escape de Cartoon Network. El personaje debe alcanzar la baldosa caf que aparece en la parte inferior del cuadrado.
2 3
Ilustracin 2-3: El personaje ya ha movido los obstculos (1, 2, 3) y est a punto de alcanzar la baldosa caf que le permite avanzar al nivel siguiente. La ilustracin 2-2 muestra el comienzo del nivel tres del juego (cada nivel es ms difcil que el anterior). El personaje deChicos del Barrio se encuentra en el punto de inicio y debe encontrar el mejor camino para llegar a la baldosa caf de la parte inferior del cuadrado. Para lograrlo, debe mover las cajas precisas (marcadas con 1, 2 y 3), en la direccin correcta y en el orden adecuado. En la ilustracin 2-3 se pueden apreciar las cajas movidas y el personaje a punto de alcanzar la baldosa caf que le permite avanzar al nivel siguiente. Este juego es muy parecido al juego de estrategia conocido como Sokoban. ACTIVIDAD A diferencia de los seres humanos que realizan actividades sin detenerse a pensar en los pasos que deben seguir, los computadores son muy ordenados y necesitan que el programador les especifique cada uno de los pasos necesarios y su orden lgico de ejecucin.
Orden lgico
Mediante la utilizacin de juegos de estrategia como Misin Escape de la serie Chicos del Barrio de Cartn Networks (http://cartoonnetworksla.com) se puede mejorar la habilidad de los estudiantes para llevar a cabo tareas en forma ordenada y lgica. En este juego, los participantes deben encontrar la mejor va de
Listar una serie de pasos para realizar una tarea y presentarlos a los estudiantes en forma desordenada para que ellos los ordenen. Por ejemplo, ordenar los pasos para pescar: ___ El pez se traga el anzuelo. ___ Enrollar el sedal. ___ Tirar el sedal al agua. ___ Llevar el pescado a casa. ___ Quitar el Anzuelo de la boca del pescado. ___ Poner carnada al anzuelo. ___ Sacar el pescado del agua. ACTIVIDAD Solicitar a los estudiantes que traigan para la prxima clase los siguientes elementos: Arroz, lentejas o maz (medio puado). Una banda de caucho. Un vaso plstico. Un trozo de papel resistente (15cm x 15cm aproximadamente). Divida los estudiantes en dos grupos y suministre a un grupo las siguientes instrucciones para elaborar Maracas: 1. Recortar del papel resistente un trozo ms grande que la boca del vaso plstico. 2. Introducir el arroz, las lentejas o el maz en el vaso (cada elemento produce una sonoridad diferente). 3. Poner sobre la boca del vaso el papel. 4. Fijar el papel al vaso con ayuda de la banda de caucho. 5. Asegurarse que la boca del vaso quede sellada. Suministre al otro grupo de estudiantes las siguientes instrucciones para elaborar Maracas: 1. Recortar del papel resistente un trozo ms grande que la boca del vaso plstico. 2. Poner sobre la boca del vaso el papel. 3. Fijar el papel al vaso con ayuda de la banda de caucho. 4. Asegurarse que la boca del vaso quede sellada. 5. Introducir el arroz, las lentejas o el maz en el vaso (cada elemento produce una sonoridad diferente). Las instrucciones dadas a ambos grupos son las mismas. Sin embargo, esta actividad ilustra muy claramente la importancia que tiene el orden en que se ejecutan las instrucciones de un algoritmo.
Dato Curioso
En 1936, el lgico y matemtico ingls Alan Turing (1291-1954), construy la primera mquina conceptual como una herramienta matemtica para estudiar los procesos algortmicos. Un clculo en una mquina de Turing consta de una secuencia de pasos que ejecuta su unidad de control. Si un problema se puede resolver en la mquina de Turing entonces es algortmico, y recprocamente si un problema tiene solucin algortmica, entonces se puede resolver en la mquina de Turing. (Adaptado de Qu es realmente un Algoritmo?, Escuela de Ingeniera, Colombia.) A continuacin se presentan conceptos bsicos que los estudiantes deben conocer (y dominar) antes de iniciar el aprendizaje de las estructuras bsicas (secuencial, .
REPRESENTACIN
Los Algoritmos se puede expresar de muchas maneras, pero en esta gua se tratarn solo dos formas: Seudocdigo y Diagrama de Flujo. En Seudocdigo la secuencia de instrucciones se representa por medio de frases o proposiciones, mientras que en un Diagrama de Flujo se representa por medio de grficos. EJEMPLO Elaborar un Algoritmo para calcular el rea de cualquier tringulo rectngulo y presentar el resultado en pantalla. SEUDOCDIGO Paso 1: Inicio Paso 2: Asignar el nmero 2 a la constante "Div" Paso 3: Conocer la base del tringulo y guardarla en la variable "Base" Paso 4: Conocer la altura del tringulo y guardarla en la variable "Altura" Paso 5: Guardar en la variable "Area" el valor de multiplicar "Base" por "Altura" Paso 6: Guardar en la variable "Area" el valor de dividir "Area" entre "Div" Paso 7: Reportar el valor de la variable "Area" Paso 8: Final DIAGRAMA DE FLUJO Utilizar Diagramas de Flujo para representar un algoritmo tiene claras ventajas, especialmente cuando son construidos por estudiantes de bsica y media. Numerosas investigaciones han mostrado que el Aprendizaje Visual es uno de los mejores mtodos para ensear habilidades del pensamiento. Las tcnicas que utilizan formas graficas para representar ideas e informacin ayudan a los estudiantes a clarificar su pensamiento, y a procesar, organizar y priorizar nueva informacin. Los diagramas visuales revelan patrones, interrelaciones e interdependencias adems de estimular el pensamiento creativo. La utilizacin de Diagramas ayuda a los estudiantes a: Clarificar el pensamiento : Ellos pueden ver cmo se conectan los procesos y se dan cuenta de cmo estos se pueden organizar o agrupar para darles el orden lgico correcto. Identificar pasos errneos : Sobre un diagrama es ms fcil identificar los cambios que se requieren para el correcto funcionamiento de un programa de computador que hacerlo sobre el cdigo. Los Diagramas de Flujo son una de las tcnicas ms utilizadas para representar grficamente la secuencia de instrucciones de un Algoritmo. Estas instrucciones estn compuestas por operaciones, decisiones lgicas y ciclos repetitivos, entre otros. La solucin de un problema puede contener varios conjuntos de instrucciones (procedimientos o mtodos) que tienen como finalidad ejecutar cada uno de los procesos necesarios para llegar a la solucin de un problema a partir de los datos disponibles (estado inicial). Las ventajas de disear un Diagrama de Flujo antes de empezar a generar el cdigo de un programa (Rojas & acato, 1980) son, entre otras: Forzar la identificacin de todos los pasos de una solucin de forma clara y lgica; Establecer una visin amplia y objetiva de la solucin; Verificar si se han tenido en cuenta todas las posibilidades; Comprobar si hay procedimientos duplicados; Representar grficamente una solucin (es ms simple hacerlo con grficas que mediante palabras); Facilitar a otras personas la comprensin de la secuencia lgica de la solucin planteada; Posibilitar acuerdos con base en la aproximacin comn a una solucin de un problema, resolver ambigedades o realizar mejoras; Establecer posibles modificaciones (resulta ms fcil depurar un programa con el diagrama que con el listado del cdigo); Agilizar la codificacin (traduccin) del algoritmo en un lenguaje de programacin; Servir como elemento de documentacin de la solucin del problema.
Ilustracin 2-4: Algoritmo para calcular el rea de cualquier tringulo rectngulo El seudocdigo est compuesto por proposiciones informales en espaol que permiten expresar detalladamente las instrucciones que llevan desde un estado inicial (problema) hasta un resultados deseado (solucin). Por lo regular, los algoritmos se escriben por refinamiento: se escribe una primera versin que luego se descompone en varios subproblemas (el nmero depende de la complejidad del problema) independientes entre s. Si es necesario se va refinando cada vez las instrucciones hasta que las proposiciones generales en espaol como las del ejemplo anterior se puedan codificar en el lenguaje seleccionado para hacer la programacin (en el caso de esta gua ser Logo).
ACTIVIDAD Basndose en la ltima actividad planteada en la unidad 1, elaborar un algoritmo en seudocdigo para cada uno de los siguientes problemas: 1. Hallar el rea de un cuadrado cuyo lado mide 5 cm. 2. Hallar uno de los lados de un rectngulo cuya rea es de 15 cm2 y uno de sus lados mide 3 cm. 3. Hallar el rea y el permetro de un crculo cuyo radio mide 2 cm. 4. Hallar el rea de un pentgono regular de 6 cm de lado y con 4 cm de apotema.
Decisin
Indica la comparacin de dos datos y dependiendo del resultado lgico (falso o verdadero) se toma la decisin de seguir un camino del diagrama u otro.
Entrada General
Entrada/Salida de datos en General (en esta gua, solo la usaremos para la Entrada).
Iteracin
Indica que una instruccin o grupo de instrucciones deben ejecutarse varias veces.
Salida Impresa
Indica la presentacin de uno o varios resultados en forma impresa.
Llamada a subrutina
Indica la llamada a una subrutina o procedimiento determinado.
Salida en Pantalla
Instruccin de presentacin de mensajes o resultados en pantalla.
Accin/Proceso General
Indica una accin o instruccin general que debe realizar el computador (cambios de valores de variables, asignaciones, operaciones aritmticas, etc).
Conector
Indica el enlace de dos partes de un diagrama dentro de la misma pgina.
Flujo
Indica el seguimiento lgico del diagrama. Tambin indica el sentido de ejecucin de las operaciones.
Conector
Indica el enlace de dos partes de un diagrama en pginas diferentes.
El Diagrama de Flujo es una herramienta grfica valiosa para la representacin esquemtica de la secuencia de instrucciones de un algoritmo o de los pasos de un proceso. Se recomienda consultar el siguiente componente curricular que apoya la elaboracin de Diagramas de Flujo: http://www.eduteka.org/modulos.php?catx=4&idSubX=124.
Ilustracin 2-6: Plantilla StandardGraph ISO 5807 para la elaboracin manual de Diagramas de Flujo. Tambin existe software especial para elaborar Diagramas de Flujo en forma rpida y fcil. Los programas para esta tarea permiten a los estudiantes: Almacenar digitalmente los diagramas construidos; Introducirles modificaciones fcilmente; Imprimir copias de los diagramas para compartirlos con compaeros o documentar sus trabajos; Exportarlos en varios formatos grficos para utilizarlos en otros programas; Alinear y organizar los smbolos automticamente; Agregar colores, tamao de letra y sombreados para lograr una apariencia profesional; Ahorrar tiempo en la modificacin de un diagrama ya que no es necesario hacer todo el dibujo nuevamente; En las siguientes direcciones de Internet se puede encontrar informacin de software para la elaboracin de Diagramas de Flujo:
Eduteka Diagramas de Flujo
http://www.eduteka.org/modulos.php?catx=4&idSubX=117
Incorrecto Correcto Ilustracin 2-5: Cruce de lneas de flujo Los Diagramas se pueden dibujar utilizando lpiz y papel, en cuyo caso resultan muy tiles las plantillas plsticas como la de la ilustracin 2-6. Estas descargan al estudiante de la preocupacin por lograr uniformidad en el dibujo.
SmartDraw http://www.smartdraw.com WinEsquema http://www.softonic.com/ie/27771/WinEsquema Dia Win32 Installer http://www.softonic.com/ie/33781/dia DFD 1.0 http://www.softonic.com/ie/16035/DFD Paraben's Flow Charter http://www.paraben.com/html/flow.html Flow Charter http://www.tucows.com/preview/199025.html Novagraph Chartist http://www.tucows.com/preview/289535.html Flow Charting 5 http://www.patton-patton.com OrgPlus http://www.tucows.com/preview/281861.html Antechinus Draw Magic http://www.tucows.com/preview/254904.html ArisFlow http://www.tucows.com/preview/362408.html
ACTIVIDAD Basndose en la actividad anterior, convertir los algoritmos elaborados en seudocdigo en diagramas de flujo: 1. Hallar el rea de un cuadrado cuyo lado mide 5 cm. 2. Hallar uno de los lados de un rectngulo cuya rea es de 15 cm2 y uno de sus lados mide 3 cm. 3. Hallar el rea y el permetro de un crculo cuyo radio mide 2 cm. 4. Hallar el rea de un pentgono regular de 6 cm de lado y con 4 cm de apotema.
matemtico Pierre Fermat, 1601-1665), para averiguar si se trataba de un nmero primo. Al cabo de 10 das, el resultado fue "NO". Este es el clculo realizado por un computador en el que se ha tardado ms en dar una respuesta de "s" o "no". (Libro Gunness de los Records 2002) Para avanzar en el tema de los Algoritmos resulta indispensable que los estudiantes comprendan algunos conceptos bsicos (variables, constantes, identificadores, funciones, operadores, etc), los cuales sern indispensables tanto para disear algoritmos como para traducirlos a un lenguaje de programacin, cualquiera que este sea (Logo, Java, Visual Basic, etc).
Dato Curioso
En el ao 1986, se introdujo en el supercomputador CRAY-2 la cifra 2^220+1, o nmero de Fermat 20 (que debe su nombre al
En MicroMundos tambin existen las variables de estado que permiten conocer o modificar los componentes ms importantes de una tortuga, un control o una caja de texto.
ACTIVIDAD Pedir a los estudiantes que traigan tres cajas de cartn (del tamao de las de los zapatos) y marcar cada caja con uno de los siguientes letreros: BASE, ALTURA y DIVISOR. Introducir un papel en blanco en cada una de las cajas. Solicitar a un estudiante del grupo que escriba un valor en cada uno de los papeles guardados en las cajas. Escribir en el tablero la frmula para calcular el rea de un tringulo rectngulo: (Base * Altura / 2) Luego pedir a otro estudiante que escriba en el tablero los valores de los papeles guardados en cada una de las cajas y aplique la frmula para calcular el rea de un tringulo utilizando esos valores. Repetir la operacin pidiendo a otro estudiante que escriba nuevos valores en el papel de cada una de las cajas, tachando los valores anteriores. Hacer notar que en los papeles guardados en las cajas marcadas con BASE y ALTURA se han anotado valores diferentes en cada ocasin. Este es el concepto de variable. Hacer notar tambin que en el papel guardado en la caja DIVISOR solo se anot un valor (2) al comienzo del ejercicio y no hubo necesidad de cambiarlo posteriormente. Este es el concepto de constante. Esta actividad se puede adaptar para reforzar el clculo de reas y permetros de otras figuras geomtricas planas.
Constantes
Las Constantes se crean en Logo de la misma forma que las variables y consisten en datos que, luego de ser asignados, no cambian en ninguna instruccin del Algoritmo. Pueden contener constantes matemticas (pi) o generadas para guardar valores fijos (3.8, "Jorge", etc). En el Algoritmo de la Ilustracin 2-4, "div" es un ejemplo de Constante. EJEMPLO Las variables y constantes adems de tener un Nombre (identificador) para poder referirnos a ellas en los procedimientos, guardan un Valor en su interior. Nombre (identificador) Valor apellido Lpez saldo 20000 tamao 8.5 esTringulo SI ACTIVIDAD Pedir a los estudiantes que analicen el siguiente ejemplo y que escriban en forma de ecuacin las situaciones planteadas. Ejemplo: El doble de la edad de Carlos Andrs es 32 aos: edadCarlos es la constante donde se guarda la edad de Carlos Andrs; R/. 2 x edadCarlos = 32 Situaciones: 1. La mitad de un valor (valor1) es 60 2. Cuatro veces un nmero (nmero1) equivale a 20 3. Un nmero (nmero2) disminuido en 5 es 18 4. El doble (elDoble) del precio de una manzana 5. La midad (laMitad) del precio de una gaseosa 6. el triple (elTriple) de mi edad Los valores que pueden tomar valor1, nmero1 y nmero2 (tres primeras situaciones) son constantes: 120, 5 y 23 respectivamente; no pueden tomar otros valores. Adems, estas constantes son las incgnitas de las situaciones. Los valores que pueden tomar elDoble, laMitad y elTriple son variables ya que dependen de un precio o de la edad del estudiante que resuelve el ejercicio. Los valores de estas variables hay que conocerlos para introducirlos en el problema como datos iniciales, pero no son la incgnita. Para ampliar esta actividad, el docente puede plantear nuevas situaciones o pedir a los estudiantes que planteen situaciones similares.
Contadores
Estructura de programacin (da A :A + 1) que consistente en almacenar en una variable (A) el valor de ella misma (:A) ms un valor constante (1). Es muy til para controlar el nmero de veces que debe ejecutarse un grupo de instrucciones. EJEMPLO Escribir un procedimiento llamado contador para contar los nmeros entre 1 y 10. R/. para contador bnombres da "nmero 0 repite 10 [da "nmero :nmero + 1 muestra nombres] muestra frase [El valor final del contador nmero es ] :nmero fin Ahora escriba en el centro de mando de MicroMundos contador.
Acumuladores
Estructura muy utilizada en programacin (da A :A + :B) y que consiste en almacenar en una variable (A) el valor de ella misma (:A) ms otro valor variable (:B). Es muy til para calcular sumatorias.
EJEMPLO Escribir un procedimiento llamado acumulador para calcular la sumatoria de los nmeros entre 1 y 10. R/. para acumulador bnombres da "contador 0 da "sumatoria 0 repite 10 [da "contador :contador + 1 da "sumatoria :sumatoria + :contador muestra nombres] muestra frase [El valor final del acumulador sumatoria es ] :sumatoria fin Ahora escriba en el centro de mando de MicroMundos acumulador.
procedimientos. Adems, el docente podr ayudarles a revisar y depurar sus programas en forma ms eficiente si estos son fciles de leer (Feicht, 2000).
Identificadores
Los identificadores son nombres que se dan a los elementos utilizados para resolver un problema y poder diferenciar unos de otros. Al asignar nombres (identificadores) a variables, constantes y procedimientos se deben tener en cuenta algunas reglas: Los nombres pueden estar formados por una combinacin de letras y nmeros (saldoMes, salario, fecha2, baseTringulo, etc). El primer carcter de un nombre debe ser una letra. La mayora de los lenguajes de programacin diferencian las maysculas de las minsculas. Los nombres deben ser nemotcnicos, con solo leerlos se puede entender lo que contienen. Deben ser muy descriptivos; no utilizar abreviaturas, a menos que se justifique plenamente. Es conveniente utilizar una sola palabra para nombrar pginas, controles, variables, etc. No utilizar caracteres reservados (%, +, /, >, etc). MicroMundos admite letras acentuadas (, , , , ). Se debe tener en cuenta que algunos lenguajes de programacin no admiten las tildes. No utilizar palabras reservadas por los lenguajes de programacin. Para cumplir con convenciones ampliamente utilizadas (Jimnez, 2002), los nombres de procedimientos, variables y constantes deben empezar con minscula. Ejemplo, fecha, suma, etc. Si es un nombre compuesto por varias palabras, cada una de las palabras (con excepcin de la primera) deben empezar con mayscula. Ejemplo: fechaInicial, baseTringulo, etc. El tipo de nombre identificadores- que se asigne a variables, constantes y procedimientos es muy importante. Cuando los estudiantes dejan de trabajar en un proyecto por varios das, es ms fcil para ellos retomar la actividad si los identificadores describen muy bien el contenido de variables, constantes y
FUNCIONES MATEMTICAS
Cada lenguaje de programacin tiene su conjunto de funciones matemticas predefinidas. Estas se ejecutan haciendo referencia a su nombre. Algunas necesitan, para arrojar un resultado, que se suministre informacin adicional (parmetros o argumentos). Algunas de las funciones matemticas ms utilizadas en MicroMundos son: DESCRIPCIN
ARCO TANGENTE. Devuelve el arco tangente (la funcin inversa de la tangente) de su entrada. Ver tan y cos.
COSENO. Devuelve el coseno de su entrada. Ver sen y tan. EXPONENCIAL. Devuelve e a la potencia del nmero.
LOGARITMO NATURAL. Devuelve el logaritmo natural (el logaritmo en base e) del nmero. Es el contrario de exp. Ver tambin log. LOGARITMO. Devuelve el logaritmo del nmero. Ver ln y exp. PI Devuelve la constante PI. POTENCIA Devuelve el nmero1 elevado a la POTENCIA de nmero2. RAZ CUADRADA. Devuelve la raz cuadrada de su entrada. SENO. Devuelve el seno del nmero en grados. Ver cos. TANGENTE. Devuelve la tangente de su entrada. Ver sen y cos.
TIPOS DE DATOS
La mayora de los lenguajes de programacin disponen de una amplia variedad de datos. MicroMundos solo tiene tres tipos de datos: nmeros, palabras y listas. Nmeros: se utilizan como entradas en las operaciones matemticas. Cuando se utilizan los signos positivo (+) o negativo (-), estos deben estar pegados al nmero. MicroMundos acepta tanto el punto como la coma para escribir nmeros decimales (3,14=3.14). Esto es importante tenerlo presente para no utilizar el punto para marcar la separacin de miles y millones. Si asignamos a una variable el valor 20.000, MicroMundos guarda en ella el valor 20 y no 20000; si le asignamos 1.345.625 en lugar de 1345625, MicroMundos no aceptar esta
notacin por tener dos puntos decimales. EJEMPLO Los siguientes son nmeros validos en Logo: 453 19,7 19.7 -14,42 856. 1E6 El signo debe estar pegado al nmero: muestra 3 + 6 da como resultado 3; muestra - 3 + 6 da como resultado el mensaje necesita ms entradas Palabras: Las palabras estn formadas por letras y/o nmeros. Una palabra est delimitada por espacios en blanco. EJEMPLO Las siguientes son palabras validas en Logo: Hola x
548 Once-Caldas Quin? El comando muestra hola da como resultado hola; muestra hola reporta hola. Varias palabras se deben tratar como una lista. Listas: una secuencia de palabras puede manipularse igual que una sola palabra mediante el uso de listas. Una lista es una secuencia de palabras separadas por espacios en blanco y encerrada entre corchetes. Las palabras en una lista no necesitan comillas y los espacios en blanco se ignoran. EJEMPLO Las siguientes son listas validas en Logo: [Esta es una lista de 7 elementos] [x y z]
OPERADORES
Son smbolos que sirven para manipular datos. En MicroMundos es necesario dejar un espacio en blanco a cada lado del signo aritmtico. Los operadores y las operaciones que se pueden realizar con ellos se clasifican en: Aritmticos: Posibilitan las operaciones entre datos de tipo numrico y dan como resultado otro valor de tipo numrico. Ejemplo: potencia (potencia); producto (*); divisin (/); suma (+); resta (-); asignacin (). Este ltimo operador presenta diferencias con el operador de asignacin (=) que utilizan la mayora de los lenguajes de programacin. Alfanumricos: Permiten operar con datos de tipo carcter o cadenas. La mayora de los lenguajes de programacin admiten el operador + para realizar la concatenacin (unin) de caracteres o cadenas. MicroMundos no tiene esta opcin. Relacinales: Permiten la comparacin entre datos del mismo tipo y dan como resultado dos valores posibles: Verdadero o Falso. Ejemplo: igual a (=); menor que (<); mayor que (>). Lgicos: Posibilitan la evaluacin lgica de dos expresiones de tipo lgico. Dan como resultado uno de dos valores posibles: Verdadero o Falso. Ejemplo: negacin (no); conjuncin (y); disyuncin (o). 3. Potencias y Races (potencia y rc) 4. Productos y Divisiones ( * y /) 5. Sumas y Restas (+ y -) 6. Concatenacin (+) 7. Relacinales (=, <, >) 8. Negacin (no) 9. Conjuncin (y) 10. Disyuncin (o) OPERADORERS ARTMETICOS Operacin Ejemplo Resultado 16 Potencia potencia 4 2 4^2 Multiplicacin 4*2 8 Divisin 4/2 2 Suma 4+2 6 resta 4-2 2 Se asigna el valor asignacin da A 4
de 4 a la variable A
Operador potencia ^ * / +
La expresin muestra azar 6 + 1 reporta un resultado diferente al que reporta muestra (azar 6) + 1 Por qu? Las operaciones que se encuentran entre parntesis se evalan primero; las que tienen el mismo orden de evaluacin se ejecutan de izquierda a derecha. Los clculos aritmticos siempre se realizan antes que cualquier otro mando Logo. Por ejemplo, en la instruccin muestra azar 6 + 1, la operacin aritmtica 6 + 1 se realiza primero que el mando Logo azar y a su vez, el mando azar se ejecuta primero que el mando muestra. En instrucciones como muestra (azar 6) + 1
hay que tener presente que siempre se deben utilizar pares de parntesis. ACTIVIDAD Pedir al estudiante que escriba en el Centro de Mando (ilustracin 12) de MicroMundos las siguientes expresiones y anote en su cuaderno las observaciones sobre los resultados de cada pareja (1 y 2; 3 y 4, 5 y 6): 1. muestra 243 + 5 - 6 + 86 42 2. muestra 5 + 86 - 42 - 6 + 243 3. muestra 7 + ( 8 * 16) 4. muestra (7 + 8 ) * 16 5. muestra 24 / 4 * 8 6. muestra 4 * 8 / 24
EXPRESIONES
Una Expresin est compuesta por valores, funciones, primitivas, constantes y/o variables, o por una combinacin de los anteriores mediante operadores. Son Expresiones: Un valor (1.3, "Jorge) Una Constante o una Variable (divide, base, rea) Una funcin (pi, cos 60, arctan 1) Una combinacin de valores, constantes, variables, funciones y operadores que siguen reglas de construccin y orden de evaluacin de los operadores (cos 60 * pi + 7 - :altura) Las Expresiones pueden ser: Aritmticas: Dan como resultado un valor numrico. Contienen nicamente operadores aritmticos y datos numricos (pi * 20 - :X) Alfanumricas: Dan como resultado una serie o cadena de caracteres. Lgicas: Dan como resultado un valor "Verdadero" o "Falso". Contienen variables y/o constantes enlazadas con operadores lgicos (A>0 y B<=5). De Asignacin: Estas Expresiones asignan el resultado de una Expresin a una Variable o a una Constante. La Expresin de Asignacin (da "rea :base * :altura / 2) asigna (da) el valor resultante de la Expresin Aritmtica (:base * :altura / 2) a la variable rea. EJEMPLO Para disear algoritmos que posteriormente puedan ser traducidos a un lenguaje de programacin, es fundamental saber manejar muy bien los operadores y el orden en el que estos se ejecutan. Las frmulas deben escribirse en una sola lnea para que el computador las evale. NOTACIN MATEMTICA EXPRESIN (rc (potencia 6 2)+ 7) / (potencia 8 2) (base * altura / 2) EJEMPLO Evaluar la expresin muestra ((potencia (5 + 3) 2) - 10) / 3 + 4 * (2 + 4) teniendo en cuenta la jerarqua de los operadores: R/. ((potencia (5+3) 2) - 10) / 3 + 4 * (2 + 4) = ((potencia 8 2) - 10) / 3 + 4 *6 ((potencia8 2) - 10) / 3 + 4 * 6 = (64 - 10) / 3 + 4 * 6 (64 - 10) / 3 + 4 * 6 = 54 / 3 + 4 * 6 54 / 3 + 4 * 6 = 18 + 24 18 + 24 = 42 42 ACTIVIDAD Tomando como modelo el ejemplo anterior y utilizando lpiz y papel, desarrollar paso a paso las siguientes expresiones. Tener en cuenta la jerarqua de los operadores: a. (5 + 2) * (4 + 4) = 56 b. 7 + 3 * 2 + (2 - 1) = 14 c. 6 * 2 + 4 * 3 + 5 / 2 = 26,5 d. 5 + 1 * 4 / 2 * 7 - (8 + 2) = 9 e. 8 + (5 * 6) - 6 = 32 f. 9 + 5 * 3 = 24 g. 4 / 2 * (10 - 5) * 3 = 30
ACTIVIDAD Pedir al estudiante que escriba en el Centro de Mando de MicroMundos (ilustracin 1-2) las siguientes expresiones y anote en el cuaderno sus observaciones sobre el resultado: 1. muestra 7 + 5 + 6 2. muestra [7 + 5 + 6] 3. muestra [maana nos vemos en clase de ingls] 4. muestra maana nos vemos en clase de ingls Obsrvese que las instrucciones 1 y 2 se diferencian en que mientras la primera da como resultado un valor numrico (18), la segunda es una lista y reporta una cadena alfanumrica de caracteres 7 + 5 + 6. La instruccin 4 reporta No s cmo hacer maana
porque le faltan los corchetes inicial y final para que MicroMundos la considere una lista de cinco palabras. EJEMPLO Luisa Fernanda quiere llenar 5 cajas de bombones y sabe que en cada caja hay que incluir 12 bombones de menta, 14 de fresa intensa y 10 de limn. Encontrar al menos dos expresiones equivalentes para calcular el nmero de bombones que necesita Luisa Fernanda. R/. Expresin 1: 5 * 12 + 5 * 14 + 5 * 10 Qu significa cada producto? Qu significa la suma de los productos? Expresin 2: 5 * ( 12 + 14 + 10 ) Qu representa la suma del parntesis? Por qu la suma se debe multiplicar por 5? Las dos expresiones dan el mismo resultado? Ejercicio adaptado de Cuenta Jugando 5; Pgina 48 (Casasbuenas & Cifuentes, 1998b). ACTIVIDAD da nmeroA 5 (asigna el valor 5 a la Constante nmeroA) da nmeroB 8 (asigna el valor 8 a la Constante nmeroB) Utilizando la informacin de los valores asignados a las Constantes nmeroA y nmeroB, evaluar las siguientes expresiones: 1. 20 + :nmeroA 2. :nmeroA + 3 * :nmeroB 3. :nmeroA > :nmeroB 4. :nmeroA + "123 5. 4 + :nmeroA - :nmeroB
http://www.eduteka.org/pdfdir/ManualMicroMundos.pdf
Ilustracin 3-1: Fases segunda y tercera del ciclo de programacin. Un Algoritmo est compuesto por instrucciones de diferentes tipos, organizadas secuencialmente, en forma de estructuras de control. De estas estructuras, las ms comunes y que se cubren en esta gua son las siguientes: Secuencial. Iterativa (repeticin). Condicional (decisin, seleccin). Una estructura de control se define como un esquema que permite representar ideas de manera simplificada y que bajo condiciones normales, es constante (Trejos, 1999). El uso del diseo descendente en los programas, la ejecucin de operaciones secuenciales, la utilizacin de ciclos repetitivos y, la toma de decisiones y alternativas de proceso, ofrecen amplias posibilidades para resolver problemas mediante la construccin de procedimientos (Castellanos & Ferreyra, 2000b). Un famoso teorema de los aos sesenta, formulado por Edsger Wybe Dijkstra, demostraba que se puede escribir cualquier programa utilizando nicamente la tres estructuras de control mencionadas. Actualmente, la programacin orientada a objetos (POO) busca reducir al mximo la cantidad de estructuras de control mediante el uso de polimorfismo; pero an as, todava se vale de estas estructuras para construir mtodos, los cuales podra decirse que son equivalentes a los procedimientos que se plantean en esta gua. Para traducir los algoritmos diseados a un lenguaje de programacin que el computador pueda entender, en esta gua se utiliza una versin de Logo, conocida como MicroMundos Pro (http://www.micromundos.com). Los docentes interesados en conocer este ambiente de
MicroMundos es un software excelente, pero su costo puede constituir una restriccin para muchas instituciones educativas. Hay una alternativa gratuita (licencia GNU) muy buena que utiliza en ncleo de Logo creado por Brian Harvey de la Universidad de Berkeley y que fue traducida al castellano por Javier LpezEscobar, se trata de Microsoft Windows Logo (MSWLogo). Esta versin de Logo se puede descargar de las siguientes direcciones: http://www.softronix.com/ http://sourceforge.net/projects/mswlogoes TIP Edsger Wybe Dijkstra naci en Rotterdam, (Holanda) en 1930. En 1956 anunci su algoritmo de caminos mnimos; posteriormente propuso el algoritmo del rbol generador minimal. A principios de la dcada de los 60, aplic la idea de exclusin mutua a la comunicacin entre un computador y su teclado. Su solucin de exclusin mutua ha sido usada en muchos procesadores y tarjetas de memoria desde 1964, ao en el que fue utilizada por IBM en la arquitectura del IBM 360. El siguiente problema del que se ocup Dijkstra fue el de los filsofos comensales. En este problema, cinco filsofos estn sentados en una mesa circular con un plato de arroz delante y un palillo a cada lado, de manera que hay cinco palillos en total. El problema trata sobre el uso de recursos comunes sin que los procesos (los filsofos) lleguen a una situacin de bloqueo mutuo; adems, que los recursos se utilicen por todos los procesos de la manera ms eficiente. Dijkstra tambin contribuy a desterrar el comando GOTO de la programacin: el comando "GOTO es considerado daino. Cuantas ms sentencias GOTO tenga un programa, ms confuso ser el cdigo fuente".
TRADUCCIN DEL ALGORITMO para tringulo local "div ;declara las constantes como locales. local "base local "altura local "rea ;declara esta variable como local. da "div 2 ;almacena 2 en la constante div (div=2) da "base 3 ;equivalente a base=3 da "altura 4 da "rea :base * :altura / :div ;aplica la frmula. muestra :rea ;reporta el contenido de la variable rea fin Tal como se puede comprobar al ejecutar el procedimiento anterior, el texto entre un punto y coma y el final de una lnea de cdigo no produce ningn resultado, ni causa errores de sintaxis. PROCESOS Se llama procesos a todas las instrucciones contenidas en un algoritmo para: declarar variables y constantes; asignar valores iniciales a variables y constantes; leer datos que suministra el usuario por medio del teclado o del ratn (mouse); realizar operaciones matemticas (aplicar frmulas); reportar o mostrar contenidos de variables y constantes; mostrar en pantalla resultados de procedimientos activados por el programa. Vale la pena recordar que la declaracin de variables y constantes se realiza en MicroMundos de la siguiente forma: local nombreVariable (Ej. local altura). La sintaxis para asignacin de un valor a una variable o constante es: da nombreVariable Valor (Ej. da altura 4). Luego de asociar valores a variables o constantes, estas se pueden utilizar anteponiendo dos puntos (:) al nombre de la variable o constante: da nuevaAltura 2 + :altura El Mando da asigna a la variable nuevaAltura el valor 2 ms el contenido de la variable altura. INTERACTIVIDAD La interactividad entre el usuario y el programa es un recurso muy valioso en programacin y se logra permitiendo la comunicacin con el programa mediante la utilizacin del teclado y/o el ratn (mouse). En MicroMundos, la forma ms comn de interactuar con un programa es por medio de controles y botones, los cuales se manipulan con el ratn. Ambos se pueden programar para que realicen acciones (ejecutar un procedimiento, ir a otra pgina, cambiar el valor a una variable, etc).
Ilustracin 3-3: Con el ratn se puede hacer clic sobre los Botones y deslizar el indicador de los Controles (a la izquierda disminuye y hacia la derecha aumenta). Otra forma de interactuar con un programa consiste en que el usuario utilice el teclado para responder a las preguntas que le plantea el programa. Las respuestas que el usuario aporta se pueden almacenar en las variables correspondientes con el comando respuesta. Para mostrar lo que el usuario contesta se puede utilizar varios comandos de MicroMundos (mostrar, escribe, anuncia, anuncia frase).
Ilustracin 3-4: Los comandos pregunta y respuesta permiten interactuar con el usuario para obtener informacin de l. EJEMPLO 3-3 para lectura local "valorUno ; declarar variables y constantes local "ValorDos pregunta [Ingrese el primer valor ] ; ingresar valorUno da "valorUno respuesta pregunta [Ingrese el segundo valor ] ; ingresar valorDos da "valorDos respuesta muestra frase [El primer valor es ] :valorUno muestra frase [El segundo valor es ] :valorDos fin El ejemplo 3-6 de la seccin Estructura Secuencial ilustra muy bien la interactividad que se puede establecer entre usuario y programa. La interactividad facilita generalizar la solucin de un problema. Por ejemplo, si se elabora un procedimiento que calcule el rea de un tringulo rectngulo, cada vez que se cambien los valores iniciales de base y altura, estos deben actualizarse en el cuerpo del procedimiento. La interactividad, por el contrario, permite que cada vez que se ejecute el procedimiento, este le pregunte al usuario por los valores de base y altura, y los tome para
calcular el rea sin la necesidad de modificar nada en el procedimiento. PROCEDIMIENTOS Segn Papert (1993), los problemas que experimentan muchos estudiantes con las matemticas se deben ms a la falta de comprensin de los algoritmos apropiados, que a la falta de manejo de los conceptos involucrados en estos. Cuando experimentan problemas con la suma, lo primero que se debe revisar es el procedimiento de la adicin. Los procedimientos se utilizan muy a menudo en la vida diaria. Participar en un juego o dar instrucciones a alguien que se encuentra perdido son actividades que requieren pensamiento procedimental o algortmico. Los estudiantes activan a diario este tipo de pensamiento sin percatarse y sin hacer algn tipo de reflexin sobre esto. De hecho, ellos disponen de un conocimiento procedimental que utilizan en muchos aspectos de sus vidas, tanto para planear una estrategia en un juego, como para dar instrucciones a alguien perdido en el vecindario. Lo curioso es que en raras ocasiones utilizan este conocimiento procedimental en las clases de matemticas. Los ambientes Logo ayudan a los estudiantes a hacer conciencia de la idea de procedimiento, ya que en l, los procedimientos se convierten en algo que se puede nombrar, manipular y reconocer (Papert, 1993). Adems del pensamiento algortmico, los razonamientos temporal y condicional juegan un papel muy importante en la gestin, organizacin y planificacin de cualquier procedimiento. Estos facilitan al programador plantear y seguir instrucciones, fragmentar una tarea en mdulos con funciones precisas y plantear decisiones que un procedimiento debe tomar de acuerdo a ciertas condiciones. La programacin esta muy ligada al control de la sucesin temporal de instrucciones organizadas en secuencias. Este control, guiado por un razonamiento temporal, es necesario para organizar el orden de las instrucciones a ejecutar, para llamar otros procedimientos en el orden correcto y ejecutar ciertas instrucciones mientras una condicin se d o a partir de cuando esta se d (Dufoyer, 1991). Y, segn Friedman (1982) y Piaget (1946), citados por Dufoyer (1991), hay que esperar necesariamente hasta los 7 u 8 aos (nivel de las operaciones concretas) para que estas operaciones sean posibles. Por lo tanto, utilizar la programacin de computadores con estudiantes de cuarto grado en adelante es viable si se hace con el objetivo de ofrecerles oportunidades de acceso a conceptos relacionados con procedimientos, creando condiciones para que ellos ejerciten en forma efectiva y divertida el pensamiento algortmico y los razonamientos temporal y condicional. En este sentido, la utilizacin del rea de procedimientos de MicroMundos Pro (ilustracin 3-2) ofrece mayores posibilidades para gestionar, organizar y planificar, en contraposicin a introducir instrucciones una a una en el
centro de mando (lo que permite al estudiante ver inmediatamente cul es el efecto que produce cada instruccin ejecutada). Como se expuso en la Unidad 1, los procedimientos son mdulos con instrucciones que inician con el comando para y que el computador ejecuta automticamente, una tras otra, hasta encontrar el comando fin. Todo procedimiento debe tener un nombre que lo identifique y que sirve para ejecutarlo cuando se ejecuta dicho nombre. Pero antes de ejecutar un procedimiento, los estudiantes deben utilizar pensamiento algortmico, razonamiento temporal y razonamiento condicional, para determinar y escribir todas las instrucciones que lo deben componer y el orden lgico de ejecucin.
Ilustracin 3-5: Elementos que componen el procedimiento cuadrado; el parmetro es el nico elemento opcional. Por otra parte, el vocabulario disponible en cualquier proyecto Logo est compuesto por los comandos propios del lenguaje (Mandos y Reporteros) ms los nombres de los procedimientos definidos en ese proyecto. En otras palabras, los procedimientos definidos (en este caso cuadrado) entran a formar parte del vocabulario de ese proyecto. Cuando se abre un proyecto nuevo, esos procedimientos ya no estn disponibles; por tanto, para utilizarlos hay que copiarlos de un proyecto existente y pegarlos en el nuevo proyecto. Todo procedimiento debe tener una lnea de ttulo que incluye un nombre; el cual, al invocarlo, ejecuta en orden, una a una, las lneas de instrucciones que contiene hasta que llega a la lnea con el Mando fin. Para escribir procedimientos se deben tener en cuenta las siguientes recomendaciones: El ttulo est compuesto por: el Mando para, el nombre del procedimiento y los parmetros (opcional). El nombre del procedimiento debe ser una palabra. Cuando se deben utilizar varias palabras para nombrar un procedimiento, se escriben sin dejar espacio entre ellas y con mayscula la primera letra
de la segunda palabra y de las subsiguientes palabras (ejemplo: valorMasAlto). Cada instruccin completa debe ocupar una lnea de cdigo Puede contener lneas en blanco En la ltima lnea solo puede aparecer el Mando fin Desde un procedimiento se pueden invocar otros procedimientos.
Ejemplo 3-4 Escribir un procedimiento para dibujar en la pantalla un cuadrado de tamao variable. R/. ANLISIS DEL PROBLEMA Formular el problema: Ya est claramente planteado. Resultados esperados: El dibujo de un cuadrado en la pantalla. Datos disponibles: El tamao de los lados del cuadrado debe ingresarlo el usuario; se sabe que todos los ngulos internos de un cuadrado son de 90 grados. El estudiante debe preguntarse si sus conocimientos actuales de matemticas le permiten resolver este problema; de no ser as, debe plantear una estrategia para obtener los conocimientos requeridos. Restricciones: El tamao del cuadrado lo suministra el usuario. Procesos necesarios: Leer el tamao del cuadrado como un parmetro llamado lado; bajar la pluma de dibujar; avanzar adelante una distancia igual a lado; girar 90 grados a la derecha; avanzar adelante una distancia igual a lado; girar 90 grados a la derecha; avanzar adelante una distancia igual a lado; girar 90 grados a la derecha; avanzar adelante una distancia igual a lado. DISEO DEL ALGORITMO
TRADUCCIN DEL ALGORITMO El siguiente procedimiento es la traduccin al lenguaje Logo del algoritmo representado por el diagrama de flujo. Pedir a los estudiantes que lo escriban en el rea de procedimientos. para cuadrado :lado limpia cp adelante :lado derecha 90 adelante :lado derecha 90 adelante :lado derecha 90 adelante :lado fin Cuando escriban en el Centro de Mando el nombre del procedimiento, seguido del parmetro correspondiente al tamao del lado (Ejemplo: cuadrado 100 ) debe dibujarse en la pantalla un cuadrado. Con el fin de poder ejemplificar ms adelante las dos formas de ejecutar un procedimiento, se debe escribir este otro procedimiento: para dibujaCuadrado cuadrado 120 fin El procedimiento cuadrado ilustra el modelo general para escribir procedimientos con parmetros. Este tipo de procedimientos son muy tiles cuando varias instrucciones se deben ejecutar en un programa varias veces de manera idntica, cuya nica diferencia sea el valor inicial que tomen algunas variables. En estos casos, las instrucciones se empaquetan en un procedimiento y los distintos valores iniciales de las variables se asignan por medio de parmetros. El nombre del parmetro se debe escribir en la lnea del ttulo, despus del nombre del procedimiento, ajustndose a las indicaciones establecidas en la Unidad 2 de esta gua para nombrar identificadores. No olvidar que al parmetro se debe anteponer el signo de dos puntos (:) tal como se puede apreciar en el ejemplo 3-4 (:lado). Luego de definir el nombre de un parmetro en la lnea de ttulo de un procedimiento (para cuadrado :lado), este parmetro se puede utilizar en cualquiera de las instrucciones (ejemplo: adelante :lado). En otras palabras, la lnea de ttulo del procedimiento cuadrado le dice a Logo que solo hay un parmetro, llamado lado. En el cuerpo del procedimiento se utiliza el Mando adelante acompaado del parmetro :lado. Esta instruccin dibuja una lnea cuya medida es igual al valor que contiene :lado. Cuando en el ttulo de un procedimiento se definen uno o varios parmetros, estos no tienen valor. Solo cuando se ejecuta el procedimiento es que se conoce el valor de cada parmetro. Por esta razn, todo parmetro debe tener un nombre. Por ejemplo, al cambiar la lnea de
Aqu tenemos dos formas equivalentes e igualmente correctas de algoritmo para dibujar un cuadrado. El algoritmo de la izquierda utiliza un rectngulo de proceso para cada instruccin; el de la derecha agrupa en un solo rectngulo las instrucciones de proceso adyacentes.
ttulo del procedimiento cuadrado por la siguiente (con dos parmetros): para cuadrado :lado :ngulo el valor del ngulo se tratar como un parmetro cuando se invoque el procedimiento. En resumen, un procedimiento, internamente, es un algoritmo que resuelve en forma parcial un problema. Desde el punto de vista externo es una orden o instruccin nica que puede formar parte de otro procedimiento o algoritmo (Cajaraville, 1989). Por otra parte, los estudiantes deben aprender a distinguir entre escribir un procedimiento y ejecutarlo. La primera actividad es el resultado de las etapas de anlisis del problema, diseo del algoritmo y traduccin de este a un lenguaje de programacin. La segunda actividad (ejecutar un procedimiento) hay dos formas de realizarla. La manera ms simple consiste en escribir el nombre del procedimiento en el Centro de Mando (ver ilustracin 3-2). Escribir cuadrado 100 en el Centro de Mando ejecuta el procedimiento llamado cuadrado, asigna el valor 100 al parmetro :lado y dibuja en la pantalla un cuadrado. Este procedimiento requiere que el usuario especifique la medida de los lados. Para dibujar un cuadrado cuyos lados midan 60 unidades se debe escribir cuadrado 60 en el Centro de Mando. Para dibujar un cuadrado ms grande se debe aumentar el valor del parmetro; por ejemplo: cuadrado 150. Otra forma de ejecutar un procedimiento es invocndolo desde otro procedimiento. Cuando se ejecuta el procedimiento dibujaCuadrado (sin parmetros), indirectamente se ejecuta el procedimiento cuadrado con 120 como parmetro. Este procedimiento dibuja exactamente el mismo cuadrado cada vez que se ejecuta (ver ejemplo 3-4). Adicionalmente, poder invocar un procedimiento desde otro, simplifica el dibujo de figuras simtricas. Se dice que una figura es simtrica cuando al doblarla por la mitad sus dos partes coinciden (Casasbuenas & Cifuentes, 1998b). El ejemplo 3-5 en la seccin Estructura Secuencial ilustra muy bien la construccin de figuras simtricas mediante la utilizacin de procedimientos que invocan a otros procedimientos. Cada procedimiento tiene su propia biblioteca de nombres, esta es la razn por la cual un procedimiento puede transferirle parmetros a otros, manteniendo los valores de sus propios parmetros. Como los nombres de los parmetros son privados, diferentes procedimientos pueden usar el mismo nombre para un parmetro sin que haya confusin acerca de su valor. Cuando Logo ejecuta un procedimiento, ste establece una biblioteca privada que contiene los nombres de los parmetros que hay en la definicin del procedimiento, asociados con los valores dados al momento de llamar al procedimiento. Al ejecutarse una instruccin que
contiene el nombre del parmetro, el procedimiento busca en su biblioteca privada el valor de ese nombre. Este es el motivo por el cual el mismo nombre de parmetro puede estar en dos bibliotecas distintas y tener informacin diferente. Los parmetros son como "variables locales" del procedimiento en el cual fueron definidos. La importancia de los nombres de entrada privados es que ofrecen la posibilidad de ejecutar un procedimiento sin tener que preocuparse por detalles de su definicin. En la siguiente seccin se presentan las estructuras de control bsicas que los estudiantes deben dominar para poder disear algoritmos y traducirlos a un lenguaje de programacin como Logo.
ESTRUCTURA SECUENCIAL
Una estructura se define como un esquema con cierta distribucin y orden que permite representar una idea de forma simplificada y que bajo ciertas condiciones es constante (Trejos, 1999). La estructura de control secuencial es la ms sencilla. Tambin se la conoce como estructura lineal. Se compone de instrucciones que deben ejecutarse en forma consecutiva, una tras otra, siguiendo una lnea de flujo. Solamente los problemas muy sencillos pueden resolverse haciendo uso nicamente de esta estructura. Normalmente, la estructura secuencial hace parte de soluciones a problemas complejos en las que se la utiliza mezclada con estructuras iterativas (repetir varias veces un conjunto de instrucciones) y condicionales (tomar decisiones). la figura permite establecer que est construida con varios cuadrados de igual tamao. Restricciones: La figura resultante debe ser igual en su forma a la muestra. Las dimensiones pueden variar. Procesos necesarios: la figura se puede realizar mediante tres procedimientos. El primero, que puede llamarse simetraCuadrado, dibuja un cuadrado con los comandos adelante y derecha. El segundo procedimiento (simetraCuadricula), dibuja cuatro cuadrados utilizando el procedimiento simetraCuadrado y el comando izquierda. El tercero (simetraEstrella), dibuja dos veces la figura que se forma con el procedimiento simetraCuadrado; se debe girar la tortuga 45 grados a la derecha luego de ejecutar simetraCuadrado por primera vez. DISEO DEL ALGORITMO
Ilustracin 3-6: Modelo de estructura secuencial. Una estructura de control secuencial puede contener cualquiera de las siguientes instrucciones: declaracin variables asignacin de valores entrada de datos procesamiento de datos (operaciones) reporte de resultados EJEMPLO 3-5 Escribir un procedimiento en Logo para dibujar en la pantalla una figura simtrica igual a la siguiente: TRADUCIN DEL ALGORITMO La solucin de este problema tiene tres procedimientos: (1) simetraCuadrado, (2) simetraCuadricula y (3) simetraEstrella. para simetraCuadrado adelante 100 derecha 90 adelante 100 derecha 90 adelante 100 derecha 90 adelante 100
R/.
ANLISIS DEL PROBLEMA Formular el problema: Ya est claramente planteado. Resultados esperados: El dibujo dado. Datos disponibles: La figura geomtrica suministrada. El anlisis de
fin
derecha 90
El procedimiento simetraCuadrado (1) est compuesto solamente por una estructura secuencial que realiza el dibujo de un cuadrado cuyos lados miden 100. para simetraCuadricula simetraCuadrado izquierda 90 simetraCuadrado izquierda 90 simetraCuadrado izquierda 90 simetraCuadrado izquierda 90 fin
El procedimiento simetraEstrella (3) tambin est compuesto nicamente por una estructura secuencial que permite dibujar una estrella perfectamente simtrica. Este procedimiento llama dos veces al procedimiento simetraCuadricula que a su vez, cada que es invocado, llama cuatro veces al procedimiento simetraCuadrado. Para lograr el efecto de estrella, luego de llamar la primera vez al procedimiento simetraCuadricula, se gira la tortuga 45 grados, antes de llamar el mismo procedimiento por segunda vez. Muchos estudiantes logran construir la figura del procedimiento simetraEstrella utilizando gran cantidad de comandos que se repiten sin estructura alguna (mediante experimentacin). Es muy importante que ellos reflexionen sobre las ventajas que ofrecen los procedimientos cuando se los utiliza a manera de objetos que cumplen con una funcin determinada (dibujar un cuadrado, calcular un rea, etc). Una tarea que debe realizarse varias veces es candidata ideal para tratarla como un procedimiento. Con la utilizacin de parmetros se pueden cambiar algunos valores cada vez que se ejecute esa tarea. De esta manera, si necesitamos dibujar varios cuadrados de diferentes tamaos, lo ms adecuado ser construir un procedimiento con el valor de Lado como parmetro y ejecutarlo varias veces asignando a este el valor del Lado del cuadro a dibujar, cada vez que se ejecute (ver el ejemplo 3-4). Por otra parte, este ejemplo ilustra la construccin de figuras simtricas mediante la utilizacin de procedimientos invocados desde otros procedimientos. El concepto de simetra es muy importante tanto en disciplinas como matemticas y arte como en la cultura general del estudiante. La programacin de computadores puede apoyar muy efectivamente el afianzamiento en el nio del concepto que este tiene de simetra, alcanzado en forma intuitiva a travs del espejo. Los espejos son para los nios su primera
El procedimiento simetraCuadricula (2) est compuesto por una estructura secuencial que dibuja cuatro cuadrados con lados adyacentes entre s. Esta es una figura simtrica ya que si se dobla por la mitad, ambas mitades coinciden. Para construir esta cuadricula no fue necesario escribir un procedimiento con el cdigo para dibujar cuadro cuadrados; en realidad, el procedimiento simetraCuadricula no realiza ningn dibujo, lo que hace es llamar cuatro veces el procedimiento simetraCuadrado que es el que realmente dibuja un cuadrado cada vez que se invoca. Para que los cuadrados sean adyacentes, se necesita girar la tortuga 90 grados a la izquierda despus de cada llamada al procedimiento simetraCuadrado.
experiencia y permiten examinar muchos aspectos de las simetras. Se puede uno preguntar acerca de la inversin mutua entre derecha e izquierda, acerca de las distancias entre el objeto y su imagen en el espejo, lo que ocurre cuando se mueve el objeto o se mueve el espejo, o lo que ocurre cuando estos giran Fletchet, T. J. citado por Cajaraville (1989). EJEMPLO 3-6 Escribir un procedimiento en MicroMundos para calcular el rea de cualquier tringulo rectngulo. En l se debe pedir al usuario que ingrese los valores de la Altura y la Base del tringulo. R/. ANLISIS DEL PROBLEMA Formular el problema: Ya est claramente planteado. Resultados esperados: Un procedimiento que permita calcular el rea de cualquier tringulo rectngulo. Datos disponibles: Base y Altura del tringulo (se deben solicitar al usuario). El estudiante debe preguntarse si sus conocimientos actuales de matemticas le permiten resolver este problema; de no ser as, debe plantear una estrategia para obtener los conocimientos requeridos. Restricciones: Los valores de base y altura son variables y se deben solicitar al usuario. Procesos necesarios: definir variables; asignar el valor 2 a la constante div; solicitar al usuario el valor de la altura del tringulo; solicitar al usuario el valor de la base; aplicar la frmula de rea; mostrar el resultado. DISEO DEL ALGORITMO
da "rea :base * :altura / :div ; realizar clculos anuncia frase [El rea del tringulo es:] :rea ; reportar el resultado fin En este ejemplo, el procedimiento tringuloRectngulo tambin est compuesto nicamente por una estructura secuencial de instrucciones. En ella se utilizan las primitivas pregunta y respuesta para permitir que el usuario del programa suministre al programa los datos altura y base del tringulo. De esta forma, se logra un procedimiento generalizado para calcular el rea de CUALQUIER tringulo rectngulo. En otras palabras, cada vez que se ejecute el procedimiento tringuloRectngulo, este le preguntar al usuario cul es la altura y la base del tringulo del cual desea calcular su rea. Tanto en la utilizacin de la estructura secuencial, como en las dos que veremos ms adelante, es muy importante que los estudiantes reflexionen y determinen el orden de ejecucin de las instrucciones (posicin) ya que la conmutatividad no es una propiedad aplicable a los algoritmos. El lenguaje algortmico, al igual que el lenguaje formal de las matemticas, tiene carcter grfico y posicional; busca la precisin, el rigor, la abreviacin y la universalidad; y, su finalidad fundamental consiste en obtener resultados internamente consistentes (Onrubia & Rochera & Barbar, 2001). La construccin de estructuras algortmicas, entendidas estas como secuencias de instrucciones y operaciones, con el fin de lograr un resultado concreto, ayuda a afianzar en los estudiantes el conocimiento procedimental matemtico. Este conocimiento se caracteriza por la accin (saber hacer) frente al conocimiento declarativo que se basa en la enunciacin (saber decir). Saber explicar (enunciar) un teorema no garantiza que este se sepa aplicar (actuar) correctamente en la solucin de una situacin problemtica determinada (Onrubia & Rochera & Barbar, 2001). Toda secuencia de acciones tiene una estructura que debe planearse (consciente o inconscientemente) antes de ejecutarla. Cuando la accin se realiza de manera automtica, quien acta no es consciente de la estructura y por tanto no puede ver las correlaciones en su actuacin y con el entorno de dicha accin; las acciones se convierten en operaciones cuando quien las realiza es consciente de las relaciones inherentes. Pero las acciones prcticas requieren tanta atencin que puede ser difcil realizarlas dndose cuenta al mismo tiempo de las correlaciones inherentes a ellas. Por esto, son fundamentales los sistemas de signos a los cuales se traducen las acciones; con los signos se pueden expresar las relaciones que existen dentro de las acciones y entre sus objetos, y se puede proceder con los signos del mismo modo que con los objetos reales (Aebli, 2001).
TRADUCCIN DEL ALGORITMO para tringuloRectngulo local "div ; declarar variables y constantes local "base local "altura local "rea da "div 2 pregunta [Ingrese la Altura del Tringulo] ; ingresar altura y base da "altura respuesta pregunta [Ingrese la Base del Tringulo] da "base respuesta
Segn Saussure (1916), citado por Aebli (2001), hay tres grandes grupos dentro de los signos: los smbolos, los signos propiamente dichos y las seales. Un signo, a diferencia de un smbolo, no se parece a su significado; es elegido arbitrariamente y para conocer su significado hay que aprenderlo y fijarlo en la memoria: palabras de lenguajes naturales, cifras, signos algebraicos, etc. Los significados se pueden codificar bsicamente de cuatro formas: mediante la palabra hablada, la palabra escrita, el signo grfico, y la variable. As, el nmero 2 se puede representar mediante el fonema dos, la palabra dos, el signo 2 o .. y la variable a. De lo anterior se puede deducir que elaborar programas de computador para resolver problemas matemticos ofrece al estudiante la oportunidad de fijar la atencin en la estructura de las operaciones que realiza, mediante su traduccin a un sistema de signos que el computador pueda entender. Dirigir la atencin a la estructura tiene como consecuencia que operaciones clsicas, como la suma con nmeros naturales, se hagan cada vez ms mviles y puedan constituir sistemas cada vez ms complejos (Aebli, 2001). EJEMPLO 3-7 Escribir un procedimiento que muestre 3 veces en pantalla la frase Esto es un camello. R/. ANLISIS DEL PROBLEMA Formular el problema: Ya se encuentra claramente formulado. Resultados esperados: Que aparezca tres veces en pantalla la frase Esto es un camello. Datos disponibles: La frase dada. Restricciones: Ninguna. Procesos necesarios: Ninguno. DISEO DEL ALGORITMO
TRADUCCIN DEL ALGORITMO para camello1 muestra [Esto es un camello] muestra [Esto es un camello] muestra [Esto es un camello] fin Este es un problema muy sencillo de resolver mediante la utilizacin de una estructura secuencial. Pedir a los estudiantes que analicen que tan eficiente sera utilizar la misma estructura si el enunciado del problema fuera: Escribir un procedimiento que muestre 60 veces en pantalla la frase Esto es un camello. Qu habra que hacer si se cambiara 3 veces por 60? ACTIVIDADES 1. Disear un algoritmo que pida al usuario dos nmeros y calcule la suma, la resta, la multiplicacin y la divisin del primero por el segundo. Traducir el algoritmo al lenguaje Logo y probarlo. 2. Disear un algoritmo para calcular cuntos litros caben en un tanque. Los datos de entrada (profundidad, largo y ancho) deben estar dados en metros. Se debe tener presente que 1 litro equivale a 1 dm3. Traducir el algoritmo al lenguaje Logo y probarlo.
TRADUCCIN DEL ALGORITMO Con el uso del comando repite: para camello2a repite 85 [ muestra [Esto es un camello] ] fin Ahora con el uso del comando cumpleveces: para camello2b cumpleveces [i 85] [ muestra [Esto es un camello] ] fin Un problema similar fue resuelto en el Ejemplo 3-7 de la
Ilustracin 3-7: Modelo de estructura iterativa. En MicroMundos Pro, la estructura repetitiva se implementa con los Mandos repite y cumpleveces. La sintaxis de repite en MMP es: repite nmero [lista-de-instrucciones]
estructura secuencial. En ese ejemplo se escribi el procedimiento camello1 que mostraba tres veces en pantalla la frase Esto es un camello. Tal como debieron advertirlo los estudiantes, resolver este nuevo enunciado agregando instrucciones al procedimiento camello1 no es prctico. Por eso, en este ejemplo se dise un algoritmo muy sencillo mediante la utilizacin de una estructura iterativa que repite la frase 85 veces. El nmero de veces que se repite la frase no tiene incidencia en la estructura del algoritmo, sea este 85 1385. Es muy importante que los estudiantes tengan muy claro la diferencia entre los procedimientos camello1 y camello2a. En el Ejemplo 3-4 se solicit a los estudiantes dibujar un cuadrado cuyos lados fueran variables. Es muy probable que en una primera aproximacin a la solucin de este problema ellos elaboren un procedimiento similar al que se plante en ese ejemplo, utilizando una estructura secuencial:
para cuadrado :lado limpia cp adelante :lado derecha 90 adelante :lado derecha 90 adelante :lado derecha 90 adelante :lado fin
alienta el estudio de las matemticas, facilita la comprensin de conceptos de esta disciplina, admite explorar activamente campos de conocimiento, permite desarrollar habilidades y ofrece un lenguaje que permite describir la forma personal de resolver problemas. EJEMPLO 3-9 Calcular el valor de la sumatoria: 1 + 2 + 3 + 4 +5 + + 100. R/. ANLISIS DEL PROBLEMA Formular el problema: Ya se encuentra claramente formulado. Resultados esperados: El resultado de la suma de los nmeros entre 1 y 100. Datos disponibles: El rango de nmeros dado. Restricciones: Ninguna. Procesos necesarios: guardar el nmero 0 en una variable e incrementarla en 1 cada vez que se ejecute el ciclo repetitivo. Guardar 0 en otra variable e ir acumulando en ella su propio valor ms el valor de la primera variable. DISEO DEL ALGORITMO
Un anlisis ms elaborado de este problema permitir a los estudiantes adquirir una conciencia mayor de la organizacin global de un cuadrado. Determinar los elementos comunes presentes en todos los cuadrados permite identificar qu permanece esttico (cuatro segmentos de recta iguales y cuatro ngulos iguales) y qu es lo que cambia (longitud de los segmentos). Aquello que cambia entre un cuadrado y otro se puede tratar como un parmetro. Adems, este anlisis permite descubrir que es posible utilizar otro tipo de estructura de control para elaborar el mismo dibujo:
para cuadrado :lado limpia cp repite 4 [ adelante :lado derecha 90 ] fin
Esta situacin evidencia cmo en las actividades de programacin el estudiante debe utilizar conocimientos adquiridos con anterioridad, cmo la etapa de anlisis favorece y alienta el rigor y la disciplina en el razonamiento y cmo ese anlisis puede conducir a nuevos descubrimientos que deriven en reorganizaciones del pensamiento, reestructuraciones de esquemas, etc. (Dufoyer, 1991). Adems, algunos psiclogos han llegado a sugerir que la programacin
Este algoritmo utiliza una operacin muy til en programacin: sumatoria = sumatoria + contador Consiste en almacenar en una variable sumatoria el valor de ella misma (sumatoria) ms otro valor variable (contador). Es muy utilizada para acumular valores. TRADUCCIN DEL ALGORITMO Con el Mando repite: para suma100a bnombres da "contador 0 da "sumatoria 0 repite 100
fin
Con el Mando cumpleveces: para suma100b bnombres da "sumatoria 0 cumpleveces [contador 100 ] [ da "sumatoria :sumatoria + :contador + 1 muestra nombres ] muestra frase [El valor de la suma 1 + 2 + 3 + . . . + 100 es ] :sumatoria fin Los procedimientos suma100a y suma100b son equivalentes, realizan la misma tarea. La primitiva cumpleveces utilizada en el procedimiento suma100b tiene una ventaja adicional con respecto a repite : incorpora una variable que aumenta en uno su valor cada vez que se ejecuta un ciclo de la estructura iterativa. La variable, que en este caso se llama contador inicia en 0 y termina en 99, para un total de 100 ciclos. Por este motivo se necesita sumarle uno a contador para que tome valores entre 1 y 100. EJEMPLO 3-10 La profesora ngela Cristina necesita calcular la nota definitiva para cada uno de los 22 alumnos que asisten a su curso de geometra. Ella realiz a todos sus estudiantes, en el primer periodo del ao lectivo, dos exmenes y asign un trabajo de investigacin. Cmo puedes ayudarle? R/. ANLISIS DEL PROBLEMA Formular el problema: Se requiere calcular un promedio de tres notas para cada uno de los 22 alumnos. Resultados esperados: La nota definitiva de cada uno de los 22 alumnos. Datos disponibles: El nmero de alumnos: 22. Las notas de cada alumno las debe digitar la profesora. Restricciones: Cada una de las tres notas tienen el mismo porcentaje en la nota definitiva. Tres notas por alumno y 22 alumnos. Procesos necesarios: Para cada uno de los 22 alumnos: Leer las tres notas, sumarlas, calcular el promedio y mostrar el promedio.
TRADUCCIN DEL ALGORITMO para notas cumpleveces [estudiante 22] [ pregunta [Ingrese la nota del primer examen ] da "examenUno respuesta pregunta [Ingrese la nota del segundo examen ] da "examenDos respuesta pregunta [Ingrese la nota del trabajo de investigacin ] da "trabajo respuesta da "sumatoria :examenUno + :examenDos + :trabajo da "promedio :sumatoria / 3 muestra (frase [El promedio del estudiante ] :estudiante + 1 [ es ] :promedio) ] Fin El procedimiento notas realiza la misma tarea 22 veces: leer tres notas, sumarlas, promediarlas y mostrar el promedio. La manera ms eficiente de resolver este problema es mediante una estructura iterativa. Ntese que los valores de las notas que ingresa el usuario no se validan, esto puede ocasionar que alguien digite una nota de, por ejemplo, 960; lo que dar como resultado un promedio fuera del rango permitido. Este aspecto se atiende con la siguiente estructura, la condicional. Los ejemplos anteriores ilustran la solucin de problemas mediante la utilizacin de estructuras repetitivas. En ellos se puede apreciar claramente la forma como esta estructura simplifica algunas soluciones, en comparacin con soluciones cuya
estructura es secuencial. Por otro lado, la estructura repetitiva es muy apropiada para explorar los conceptos de multiplicacin (suma cuyos sumandos son iguales) y potenciacin (multiplicacin de factores iguales). EJEMPLO 3-11 Elaborar un procedimiento en Logo para calcular tablas de multiplicar. El usuario debe ingresar qu tabla de multiplicar desea. R/. ANLISIS DEL PROBLEMA Formular el problema: Ya se encuentra claramente formulado. Resultados esperados: La tabla de multiplicar que el usuario indique. Datos disponibles: El nmero de la tabla (indicada por el usuario). Restricciones: Ninguna. Procesos necesarios: pedir al usuario que ingrese la tabla de multiplicar que desea. Guardar ese valor en una variable (tabla). Multiplicar cada uno de los valores entre 0 y 9 por la variable tabla. Mostrar el resultado de cada multiplicacin. DISEO DEL ALGORITMO Ilustracin 3-8: Ejecucin del procedimiento tablaMultiplicar. La estructura repetitiva es muy apropiada para reforzar los conceptos de multiplicacin y potenciacin. La suma 6 + 6 + 6 + 6 + 6 + 6 + 6 puede expresarse como una multiplicacin: 6 * 7; de forma similar, la multiplicacin 3 4 * 3 * 3 * 3 puede expresarse como una potencia: 3 =81. El nmero 3, que se multiplica varias veces, se conoce como base; 4, la cantidad de veces que se debe multiplicar la base, se conoce como exponente, y 81, el resultado, se conoce como potencia. Se lee: 81 es la potencia de 3 elevado a la 4. Existe una leyenda muy antigua sobre el origen del juego de ajedrez. La leyenda evidencia claramente la velocidad con que aumenta una progresin geomtrica y es un buen punto de partida para empezar a resolver problemas de potenciacin con ayuda del computador. Ntese que, al igual que en el ejemplo 3-10, el reportero frase devuelve una lista formada por sus entradas (palabras o listas). frase puede tomar ms de dos entradas cuando se utilizan parntesis para encerrar el reportero y sus entradas, las cuales pueden incluir texto entre corchetes: muestra (frase [texto 1] :variable1 [ texto2] :variable2 + 1 :variable3 [texto3])
Historia Curiosa
Un da, en la India, un joven bracmn llamado Lahur Sessa pidi una audiencia con el Rey para obsequiarle el juego que haba inventado. La curiosidad del rey lo llev a conceder la cita que peda el joven Sessa. El rey qued maravillado y aprendi rpidamente las reglas de aquel juego que consista de un tablero cuadrado dividido en sesenta y cuatro cuadritos iguales (32 blancos y 32 negros); sobre este tablero se ubicaban dos colecciones de piezas, que se distinguan unas de otras por el color, blancas y negras, repitiendo simtricamente los motivos y subordinadas a reglas que permitan de varios modos su movimiento. Algn tiempo despus, el rey mand llamar a su presencia al joven bracmn y dirigindose a l le dijo: - Quiero recompensarte, amigo mo, por este maravilloso obsequio, que de tanto me sirvi para aliviar viejas angustias. Pide, pues, lo que desees, para que yo pueda demostrar, una vez ms, como soy de agradecido con aquellos que son dignos de una recompensa.
TRADUCCIN DEL ALGORITMO para tablaMultiplicar pregunta [Qu tabla de multiplicar desea? ] da "tabla respuesta cumpleveces [multiplicando 10] [ da "resultado :multiplicando * :tabla muestra (frase :tabla [ x ] :multiplicando [ = ] :resultado) ] fin
Ante tal ofrecimiento, el joven respondi: - Voy, pues, a aceptar por el juego que invent, una recompensa que corresponda a vuestra generosidad; no deseo, sin embargo, ni oro, ni tierras, ni palacios. Deseo mi recompensa en granos de trigo. -Granos de trigo? exclam el rey, sin ocultar la sorpresa que le causara semejante propuesta-. Cmo podr pagarte con tan insignificante moneda? -Nada ms simple -aclar Sessa-. Dadme un grano de trigo por la primera casilla del tablero, dos por la segunda, cuatro por la tercera, ocho por la cuarta, y as sucesivamente hasta la sexagsima cuarta y ltima casilla del tablero. No slo el rey, sino tambin los visires y venerables bracmanes, se rieron estrepitosamente al or la extraa solicitud del joven. Insensato -exclam el rey-. Dnde aprendiste tan grande indiferencia por la fortuna? La recompensa que me pides es ridcula. Mando llamar el rey a los algebristas ms hbiles de la Corte y les orden calculasen la porcin de trigo que Sessa pretenda. Los sabios matemticos, al cabo de algunas horas de realizar clculos dispendiosos, volvieron al saln para hacer conocer al rey el resultado completo de sus clculos. Preguntles el rey, interrumpiendo el juego: -Con cuantos granos de trigo podr cumplir, finalmente, con la promesa hecha al joven Sessa? -Rey magnnimo -declar el ms sabio de los gemetras-: calculamos el nmero de granos de trigo que constituir la recompensa elegida por Sessa, y obtuvimos un nmero cuya magnitud es inconcebible para la imaginacin humana (el nmero en cuestin contiene 20 guarismos y es el siguiente: 18.446.744.073.709. 551. 615. Se obtiene restando 1 a la potencia 64 de 2). -La cantidad de trigo que debe entregarse a Lahur Sessa -contino el gemetra- equivale a una montaa que teniendo por base la ciudad de Taligana, fuese 100 veces ms alta que el Himalaya. La India entera, sembrados todos sus campos, y destruidas todas sus ciudades, no producira en un siglo la cantidad de trigo que, por vuestra promesa, debe entregarse al joven Sessa. Cmo describir aqu la sorpresa y el asombro que esas palabras causaron al Rey Ladava y a sus dignos visires? El soberano hind se vea, por primera vez, en la imposibilidad de cumplir una promesa. Lahur Sessa -refiere la leyenda de la poca-, como buen sbdito, no quiso dejar afligido a su soberano. Despus de declarar pblicamente que se desdeca del pedido que formulara, se dirigi respetuosamente al monarca y le dijo: los hombres ms precavidos, eluden no slo la apariencia engaosa de los nmeros, sino tambin la falsa modestia de los ambiciosos. El rey, olvidando la montaa de trigo que prometiera al joven bracmn, lo nombr su primer ministro. (Tomado del libro El hombre que calculaba escrito por Malba Tahan) EJEMPLO 3-12 Elaborar un procedimiento en Logo para ayudar a los hbiles algebristas de la corte del Rey Ladava con el clculo del nmero de granos de trigo que deben entregar a Lahur Sessa como pago por haber inventado el juego de ajedrez. R/. ANLISIS DEL PROBLEMA Formular el problema: Es un problema de multiplicaciones de factores iguales que pueden expresarse en forma de potencias; adems, para llegar al resultado final se deben acumular los resultados parciales.
Resultados esperados: El nmero de granos que el Rey Ladava debe entregar a Lahur Sessa. Datos disponibles: El nmero de cuadros del tablero de ajedrez (64) y la regla dada por Sessa: un grano de trigo por la primera casilla del tablero, dos por la segunda, cuatro por la tercera, ocho por la cuarta, y as sucesivamente hasta la sexagsima cuarta y ltima casilla del tablero. Restricciones: Aplicar la regla planteada por Sessa. Procesos necesarios: Un ciclo que se repita 64 veces. En cada iteracin se debe acumular en una variable (granos), su propio valor ms el resultado de 2 elevado a un exponente que aumenta su valor en uno con cada iteracin. DISEO DEL ALGORITMO
TRADUCCIN DEL ALGORITMO Utilizando el comando repite: para ajedrez bnombres da "exponente 0 da "granos 0 repite 64 [ da "granos :granos + potencia 2 :exponente da "exponente :exponente + 1 muestra nombres ] muestra frase [El nmero de granos que gan Sessa es ] :granos fin
Utilizando el comando cumpleveces: para ajedrezB bnombres da "granos 0 cumpleveces [exponente 64] [ da "granos :granos + potencia 2 :exponente muestra nombres ] muestra frase [El nmero de granos que gan Sessa es ] :granos fin Obtuvieron los estudiantes el mismo resultado (1,84467440737e+019)? El computador tambin tard varias horas para calcular el resultado final? Cul es la diferencia entre los procedimientos ajedrez y ajedrezB? Qu funcin cumplen los comandos bnombres y nombres? Cul es la diferencia entre crecimiento aritmtico y crecimiento geomtrico? ACTIVIDADES Los estudiantes deben encontrar solucin a los siguientes problemas empleando la metodologa expuesta en la Unidad 1: Analizar el problema (formulacin del problema, resultados esperados, datos disponibles, restricciones y procesos necesarios), disear el algoritmo, traducirlo al lenguaje Logo y probar el programa resultante. 1. Elaborar un procedimiento que calcule y muestre las reas de 100 crculos con radio de 1 a 100 cm. 2. Elaborar un procedimiento que calcule y muestre el cuadrado de los nmeros 1 a 90. 3. Elaborar un procedimiento que le reporte al electricista de un edificio recin construido cuantos bombillos debe comprar. Se sabe que el edificio tiene 8 pisos, 8 apartamento en cada piso y cada apartamento tiene 8 bombillos. En la solucin se debe emplear una estructura repetitiva. 4. Elaborar un procedimiento que calcule el rea de cualquier cubo. 5. Elaborar un procedimiento que dibuje polgonos regulares de 5, 6, 7, 8 y 9 lados. El usuario debe indicar el nmero de lados del polgono.
ESTRUCTURA CONDICIONAL
Es fundamental que los estudiantes presten atencin especial a las estructuras que utilizan para resolver problemas y las reconozcan para lograr mayor control sobre la solucin planteada. De esta manera, la programacin de computadores les ayuda a planear conscientemente las secuencias de acciones que resuelven un problema planteado y las estructuras involucradas en una solucin dada. La estructura condicional se utiliza para indicarle al computador que debe evaluar una condicin y, a partir del resultado, ejecutar el bloque de instrucciones correspondiente. La forma ms comn est compuesta por una proposicin (condicin) que se evala y dos bloques de instrucciones que se ejecutan, uno cuando la condicin es verdadera (seleccin simple y doble) y otro cuando sta es falsa (nicamente en la seleccin doble). Algunos autores se refieren a este tipo de estructura como estructura de seleccin, estructura selectiva o estructura de decisin; en esta gua, todas estas denominaciones son consideradas sinnimas. Para que una proposicin (frase declarativa) sea valida, debe poder afirmarse que es verdadera o falsa. En programacin, se utilizan operadores relacionales (<, =, >) para establecer la relacin que existe entre dos elementos de la proposicin. Por ejemplo, La calificacin de Esteban en Historia es mayor que 6.0, es una proposicin valida. De una parte tenemos La calificacin de Esteban en Historia (A) y, de la otra, el valor 6.0 (B); de A con respecto a B, se afirma que A es mayor que B, por lo tanto, la relacin existente entre A y B es ser mayor que. Para que el computador entienda esta proposicin, debe expresarse as: :calificacin > 6.0, donde :calificacin es la variable que contiene el valor de la calificacin de Esteban en Historia. OPERADOR = < > DESCRIPCIN EJEMPLO Igual que :nguloUno = 90 :tipo = SI Menor que :nguloUno < 90 Mayor que :nguloUno > 90 seleccin simple. seleccin doble. seleccin mltiple.
Las estructuras condicionales simple y doble evalan una proposicin (condicin) que devuelve como resultado nicamente dos valores posibles y excluyentes: verdadero o falso. En cambio, la estructura condicional de seleccin mltiple permite que la condicin devuelva ms de un valor posible y que para cada uno de esos valores se ejecute el bloque de instrucciones correspondiente. Por ejemplo, una situacin tpica de seleccin mltiple es cuando la incorporacin al ejercito, de un joven al terminar sus estudios de educacin media, depende del color de una balota: si saca una balota roja, su incorporacin al ejercito es inmediata; si es azul, la incorporacin ser en julio; y si es blanca, el estudiante no debe prestar servicio militar. En esta situacin hay tres valores posibles y cada uno de esos valores implica la ejecucin de una instruccin diferente (Jimnez, 2002). Debido al alcance de esta gua, solo se cubren aqu los dos primeros tipos de estructura condicional: simple y doble.
Seleccin simple
La estructura condicional de seleccin simple ejecuta un bloque de instrucciones cuando la proposicin (condicin) es verdadera; si esta es falsa, no hace nada.
Adicionalmente, las proposiciones pueden ser sencillas o compuestas. Las proposiciones compuestas se forman con dos o ms proposiciones sencillas unidas por operadores lgicos (y, o, no). Cuando se unen dos proposiciones por medio del operador lgico y, significa que ambas proposiciones deben ser verdaderas (conjuncin). Cuando se unen dos proposiciones por medio del operador lgico o, significa que por lo menos una de las dos proposiciones debe ser verdadera (disyuncin). Por su parte, un bloque de instrucciones puede contener una o varias instrucciones que se ejecutan una detrs de otra. La estructura condicional tiene tres variantes:
Ilustracin 3-9: Modelo de estructura condicional simple. Para la estructura condicional de seleccin simple, MicroMundos ofrece el comando si. La sintaxis es: si cierto-o-falso [ lista-de-instrucciones ]
el comando si ejecuta la lista-de-instrucciones nicamente si al evaluarse la proposicin, esta devuelve cierto (verdadero). EJEMPLO 3-13 para seleccinSimple pregunta [Ingrese el ngulo] da "nguloUno respuesta si (:nguloUno = 90) [ da "reportar [ es un ngulo recto] muestra frase :nguloUno :reportar ] fin En este ejemplo, cierto-o-falso (:nguloUno = 90) indica la condicin que se debe evaluar la cual puede devolver nicamente uno de dos valores posibles: verdadero o falso. En caso de ser verdadera la proposicin, se ejecuta la [lista-de-instrucciones] indicada entre corchetes; esta puede contener una o varias instrucciones. Cuando es falsa la proposicin evaluada, no se ejecutan instrucciones. Adems, se puede observar un recurso grfico muy importante para dar claridad a las lneas de cdigo de los procedimientos: (1) dejar lneas en blanco para dividir bloques de cdigo; (2) utilizar sangras para indicar porciones de cdigo subordinadas a un comando; (3) abrir y cerrar los corchetes que indican bloques de cdigo en una lnea a parte, de tal forma que se aprecie muy claramente dnde inicia y dnde termina una lista-de-instrucciones.
siotro cierto-o-falso [ lista-de-instrucciones-A ] [ lista-de-instrucciones-B ] El comando siotro ejecuta la lista-de-instrucciones-A si al evaluarse la proposicin, esta es verdadera. Si la proposicin es falsa, se ejecuta la lista-de-instruccionesB. Ambas listas de instrucciones se deben indicar entre corchetes [ ] y pueden estar compuestas por una o ms instrucciones. EJEMPLO 3-14 para seleccinDoble pregunta [Ingrese el ngulo] da "nguloUno respuesta siotro (:nguloUno = 90) [ da "reportar [ es un ngulo recto] ] [ da "reportar [ NO es un ngulo recto] ] muestra frase :nguloUno :reportar fin En este ejemplo, cierto-o-falso (:nguloUno = 90) indica la proposicin que se debe evaluar, la cual solo puede devolver uno de dos valores posibles: verdadero o falso. En caso de que la proposicin sea verdadera, se ejecuta la [lista-de-instrucciones-A] indicada entre corchetes: ([da reportar [ es un ngulo recto]]). Cuando la proposicin evaluada es falsa, se ejecuta la [lista-deinstrucciones-B] ([da reportar [ NO es un ngulo recto]]). Ntese que la instruccin muestra frase :nguloUno :reportar se encuentra fuera de los corchetes; por tanto, se ejecutar sin importar si la proposicin es verdadera o falsa. Adems, ejemplifica muy bien el concepto de variable ya que el valor del ngulo se guarda en la variable denominada nguloUno y el aviso que se debe mostrar acerca de si el ngulo es o no recto, tambin se guarda en una variable (reportar). Tanto en la estructura de seleccin simple como en la doble se debe tener en cuenta lo siguiente: Requieren en el encabezado las palabras reservadas si y siotro respectivamente. La proposicin debe ser una frase declarativa, la cual se pueda afirmar o negar. Cuando la proposicin es sencilla (sin operadores lgicos) no es necesario que vaya entre parntesis; si es compuesta (dos o ms proposiciones unidas con operadores lgicos como: o, y, no) tiene que encerrarse con parntesis. Como en el primer caso no sobran los parntesis (no genera error), es recomendable utilizarlos siempre. Por ejemplo:
Seleccin doble
La estructura condicional de seleccin doble ejecuta un bloque de instrucciones (A) cuando la proposicin (condicin) es verdadera y un bloque diferente (B) cuando esta es falsa.
Ilustracin 3-10: Modelo de estructura condicional doble. Para la estructura condicional de seleccin doble, MicroMundos ofrece el comando siotro. La sintaxis es:
(nguloUno = 90) es una proposicin sencilla equivalente a nguloUno = 90, pero es mejor utilizar la primera forma. Las listas de instrucciones deben estar agrupadas con corchetes, estos indican dnde empieza y dnde termina la lista que conforma el bloque que se debe ejecutar. EJEMPLO 3-15 Un estudiante aprueba un examen cuando obtiene una calificacin mayor o igual a seis. Elaborar un procedimiento que pida al usuario una calificacin, aplique el criterio de aprobacin e imprima Aprobado o Reprobado, segn sea el caso. R/. ANLISIS DEL PROBLEMA Formular el problema: Es un problema sencillo de seleccin doble. Resultados esperados: Un aviso que reporte si el estudiante Aprob o Reprob el examen. Datos disponibles: La calificacin ingresada por el usuario. Para aprobar, la nota debe ser mayor o igual a 6.0. Restricciones: Aplicar el criterio de aprobacin. Procesos necesarios: Solicitar al usuario que ingrese la calificacin. Evaluar si la calificacin es igual o superior a 6.0; en caso de ser verdadero, reportar Aprobado; en caso contrario, reportar Reprobado. DISEO DEL ALGORITMO
fin
[ anuncia [Reprobado]
En este ejemplo, se puede observar la sintaxis de los operadores lgicos (y, o, no), mediante los cuales se unen proposiciones sencillas para construir proposiciones compuestas. Estos deben ir en seguida del parntesis que abre la proposicin: siotro (o :calificacin > 6.0 :calificacin = 6.0) La proposicin se lee as: calificacin mayor que 6.0 o calificacin igual a 6.0.
La estructura condicional ofrece al estudiante la oportunidad de afianzar sus conocimientos y habilidades con proposiciones y relaciones de orden. Tal como se expres al comienzo de esta seccin, una proposicin es una cadena de palabras (frase) con sentido completo y de tipo declarativo, la cual puede ser calificable como verdadera o falsa (Bustamante, 2004). Las siguientes frases afirman algo, por tanto son consideradas proposiciones: 1. Cali es la capital del Valle del Cauca. 2. El cuatro es un nmero impar. 3. Seis es menor que doce. 4. El INSA es un colegio regentado por la comunidad de Padres Basilianos. 5. lvaro Uribe es el presidente de Colombia. De las proposiciones primera, tercera, cuarta y quinta podemos decir que son verdaderas; de la segunda podemos afirmar que es falsa. Sin embargo, para poder afirmar que la cuarta proposicin es verdadera, hay que disponer del conocimiento suficiente sobre este colegio ubicado en el barrio Andrs Sann en la ciudad de Cali. Esto nos conduce a hacer otra consideracin: establecer explcitamente si una proposicin es verdadera o falsa puede resultar en algunos casos muy difcil o imposible. Por otra parte, la quinta proposicin inicialmente fue verdadera durante un lapso de tiempo (2002-2006); posteriormente se aprob la reeleccin y lvaro Uribe se present como candidato y gan las elecciones, entonces la proposicin ser verdadera para el lapso de tiempo 2002-2010. Con respecto a las relaciones de orden podemos decir que consisten en un par de elementos presentes en una proposicin relacionados por medio de un atributo gradado. Por ejemplo, el elemento A es mayor o igual que el elemento B o seis es menor que doce. Proposiciones en las cuales mayor o igual que y menor que son las relaciones de orden que se establecen entre los elementos A y B, y entre seis y doce, respectivamente. Hay que tener cuidado con el uso del lenguaje cotidiano que en ocasiones hace que dos relaciones sean equivalentes como igual o superior a y mayor o igual que. En cambio, entre 0 y 10, inclusive y entre 0 y 10 no son equivalentes; en la primera relacin los valores 0 y 10 hacen que la proposicin sea verdadera, en la segunda relacin, no.
TRADUCCIN DEL ALGORITMO para aprueba local "calificacin pregunta [Ingrese la Calificacin] da "calificacin respuesta siotro (o :calificacin > 6.0 :calificacin = 6.0) [ anuncia [Aprobado] ]
MicroMundos PRO
(:a = :b) (:a > :b) (o :a > :b :a = :b) (o :a > :b :a = :b) (:a < :b) (o :a < :b :a = :b) (o :a < :b :a = :b) (y :a > 0 :a < 10) (y (o :a > 0 :a = 0) (o :a < 10 :a = 10))
TIP Hay que tener cuidado cuando se copia de un procesador de texto una porcin de texto que contenga comillas () y se pega en el rea de procedimientos de MicroMundos. Las comillas () que generan estos programas no son equivalentes a las comillas de MicroMundos ("). Tambin hay que tener cuidado cuando se quiere comparar un texto conformado por dos o ms palabras, este debe encerrarse entre barras (|palabra1 palabra2|). ACTIVIDADES 1. Identificar cul(es) de las siguientes proposiciones son validas (calificables), explicar por qu son validas o por qu no lo son: a. El ao 1200 aC. es ms reciente que el ao 970 de la era Cristiana b. El jugo de lulo tiene muy buen sabor c. La nota mxima en un examen es 10 d. Esteban es alto e. Ojal que no llueva maana f. Podra decirme, por favor, qu hora es? g. Cuatro es mayor que 2 2. Identificar para cul(es) de las siguientes proposiciones es muy difcil o imposible establecer con toda certeza si son ciertas o falsas. a. Apolinar Salcedo es el alcalde de Cali. b. Edith Piaf es la alcaldesa de Paris. c. Juan Roa Sierra fue el asesino de Jorge Elicer Gaitn el 9 de abril de 1948. d. Marco Fidel Surez fue presidente de Colombia. e. Bogot es la capital de Bolivia. 3. Identificar las partes que componen las siguientes proposiciones (parte A, parte B y la relacin entre ambas). a. El Gobernador del Valle es Angelino Garzn. b. 7.0 es menor o igual que 20.5 c. El nguloUno es mayor que 90 d. La calificacin de Juan Felipe en Historia es menor que 5.0 e. Cali y Medelln son ciudades colombianas f. 4 y 8 son nmeros menores que 10 g. La capital de Colombia es Bogot 4. Expresar las siguientes proposiciones en un formato que pueda entender MicroMundos. a. El Gobernador del Valle es Angelino Garzn. b. 7.0 es menor o igual que 20.5 c. El nguloUno es mayor que 90 d. El jugo de lulo tiene muy buen sabor e. La calificacin de Juan Felipe en Historia es menor que 5.0 f. Esteban es alto g. El valor de una calificacin no puede ser mayor que 10 h. El valor de una calificacin no puede exceder a 10 i. La capital de Colombia es Bogot EJEMPLO 3-16 Supongamos que Mnica quiere ir a comer helado y su padre le propone: Como hoy entregan tus calificaciones del segundo perodo, si haz obtenido en matemticas ms de 8.0, vamos a comer helado el prximo sbado, de lo contrario no vamos. La situacin comer helado est sujeta a la condicin obtener ms de 8.0 en
Un aspecto fundamental de esta estructura es la reflexin sobre el papel del lenguaje en la formulacin y uso de relaciones de orden y de proposiciones. Diversos autores que se han ocupado de la lgica y el lenguaje han establecido tres categoras generales para el uso del lenguaje: informativa, expresiva y directiva. Para la programacin y en especial para la estructura condicional, resulta imprescindible el uso informativo del lenguaje. Este se encarga de comunicar informacin mediante la formulacin y afirmacin o negacin de proposiciones. El discurso informativo se utiliza para describir el mundo y para razonar sobre l, sin importar si las proposiciones son importantes o no, si son generales o especficas, o si son verdaderas o falsas (Copi & Cohen, 2000). Los estudiantes deben estar en capacidad de distinguir el discurso informativo en un texto o en el planteamiento verbal de un problema. Pero en ciertos textos o planteamientos resulta difcil identificar de manera inmediata la existencia de proposiciones que se puedan contestar con un s o con un no (Solano, 1991). En MicroMundos es muy importante que las proposiciones se puedan expresar directamente, en forma de notacin matemtica o mediante texto. Para ello, es fundamental que los estudiantes identifiquen los componentes de las proposiciones (enunciados y relacin entre ellos) y verifiquen que sean validos. Por ejemplo, de las cinco proposiciones planteadas con anterioridad, solo la nmero tres se puede expresar en notacin matemtica; la otras proposiciones hay que expresarlas como texto, con excepcin de la nmero 2 que no se puede expresar directamente: 1. (:capitalValle = "Cali) 2. El cuatro es un nmero impar no se puede expresar directamente. Hay que elaborar un procedimiento para determinar si un nmero es par o impar. 3. (6 < 12) 4. (:rectorINSA = "Basiliano) 5. (:ciudad = "|Cartagena de Indias|) Un ltimo aspecto a tener en cuenta son los cuantificadores que se utilizan en algunas proposiciones: todos, algunos, ningn, ninguno, slo, hay, etc. Incluso, proposiciones que no contienen cuantificadores se pueden transformar en proposiciones cuantificadas: Cada planeta gira sobre su eje se puede escribir como todos los planetas giran sobre su eje
matemticas para el segundo perodo. R/. ANLISIS DEL PROBLEMA Formular el problema: Es un problema sencillo de seleccin doble. Resultados esperados: Un aviso que indique si el estudiante puede ir a comer helado el prximo sbado o no. Datos disponibles: La calificacin de matemticas ingresada por el usuario. La regla dice: para ir a comer helado, la nota debe ser mayor que 8.0. Restricciones: Aplicar la regla dada. Procesos necesarios: Solicitar al usuario que ingrese la calificacin de matemticas. Evaluar si la calificacin es igual o inferior a 8.0; en caso de ser verdadero, reportar NO come helado; en caso contrario, reportar SI come helado. DISEO DEL ALGORITMO
EJEMPLO 3-17 La profesora ngela Cristina necesita calcular la nota definitiva para cada uno de los 22 alumnos que asisten a su curso de geometra, con el fin de saber quines aprobaron y quines reprobaron (para aprobar hay que obtener una nota igual o superior a 6.5). Ella realiz a todos sus estudiantes, en el primer periodo del ao lectivo, dos exmenes y asign un trabajo de investigacin. Cmo puedes ayudarle? R/. ANLISIS DEL PROBLEMA Formular el problema: Se requiere calcular un promedio de tres notas para cada uno de los 22 alumnos. Resultados esperados: La nota definitiva de cada uno de los 22 alumnos y un aviso que indique si aprob o no. Datos disponibles: El nmero de alumnos: 22. Las notas de cada alumno las debe digitar la profesora. Restricciones: Cada una de las tres notas tienen el mismo porcentaje en la nota definitiva. Tres notas por alumno y 22 alumnos. Todas las notas deben ser mayores o iguales a 1 y menores o iguales a 10. Para aprobar hay que tener un promedio igual o superior a 6.5. Procesos necesarios: Para cada uno de los 22 alumnos: Leer las tres notas, verificar que estn en el rango permitido (entre 1 y 10), sumarlas, calcular el promedio, verificar si aprob o no. Mostrar el promedio y un aviso que informe si aprob o no. DISEO DEL ALGORITMO
TRADUCCIN DEL ALGORITMO para helado local "matemticas pregunta [Ingrese la calificacin de Matemticas] da "matemticas respuesta siotro (o :matemticas < 8.0 :matemticas = 8.0) [ anuncia [NO come helado] ] [ anuncia [SI come helado] ] fin
En este ejemplo, la proposicin se puede expresar de dos formas equivalentes: (matemticas > 8.0) (matemticas <= 8.0) La primera forma es ms fcil de manipular por los estudiantes, ya que si la proposicin es verdadera entonces Si come helado y si la proposicin es falsa entonces NO come helado; adems, utiliza el operador relacional mayor que (>). La segunda forma (utilizada en el algoritmo) es ms compleja. En ella, si la proposicin es verdadera entonces NO come helado y si la proposicin es falsa entonces SI come helado. En esta forma se presenta un contrasentido que puede desorientar a los estudiantes. Adems, hay que usar el operador relacional menor o igual que, el cual se traduce en MicroMundos as: (o :matemticas < 8.0 :matemticas = 8.0) la relacin de igualdad no se menciona explcitamente en el Pg.52 - 2-may-07 - Versin 1.0 - Descargue gratuitamente esta Gua: http://www.eduteka.org/AlgoritmosProgramacion.php
para notasDos cumpleveces [estudiante 2] [ pregunta [Ingrese la nota del primer examen ] da "examenUno respuesta pregunta [Ingrese la nota del segundo examen ] da "examenDos respuesta pregunta [Ingrese la nota del trabajo de investigacin ] da "trabajo respuesta siotro (o :examenUno < 1 :examenUno > 10 :examenDos < 1 :examenDos > 10 :trabajo < 1 :trabajo > 10) [ anuncia [Datos no validos ] ] [ da "sumatoria :examenUno + :examenDos + :trabajo da "promedio :sumatoria / 3 siotro (:promedio < 6.5) [ da "aprobar [ -> NO aprob el primer periodo de Geometra ] ] [ da "aprobar [ -> SI aprob el primer periodo de Geometra ] ] muestra (frase [El promedio del estudiante ] :estudiante + 1 [ es ] :promedio :aprobar) ] ] fin Ntese que en este ejemplo se evala si la proposicin compuesta es verdadera entonces los datos no son validos. Como se utiliza el operador lgico o, basta con que una de las proposiciones sea verdadera para que toda la proposicin compuesta tambin lo sea. EJEMPLO 3-18 Escribir un procedimiento en MicroMundos para leer los valores de dos de los tres ngulos internos de un tringulo y mostrar en pantalla Es un Tringulo Rectngulo si efectivamente es un tringulo de este tipo o, en caso contrario, mostrar No es un Tringulo Rectngulo. TRADUCCIN DEL ALGORITMO para triangulo local "ANGULO1 local "ANGULO2 local "ANGULO3 local "EsRectangulo pregunta [Ingrese el 1er ngulo del Tringulo] da "ANGULO1 respuesta pregunta [Ingrese el 2do ngulo del Tringulo] da "ANGULO2 respuesta da "ANGULO3 180 - :ANGULO1 - :ANGULO2 da "EsRectangulo "NO ;inicializa la variable TIPO en NO ;si uno de los ngulos es igual a 90 cambia el valor de TIPO a SI si :ANGULO1 = 90 [da "EsRectangulo "SI] si :ANGULO2 = 90 [da "EsRectangulo "SI] si :ANGULO3 = 90 [da "EsRectangulo "SI]
Pg.53 - 2-may-07 - Versin 1.0 - Descargue gratuitamente esta Gua: http://www.eduteka.org/AlgoritmosProgramacion.php
;dependiendo del valor de EsRectangulo, muestra que tipo de tringulo es siotro :EsRectangulo = "SI [ anuncia [SI es un Tringulo Rectngulo] ] [ anuncia [NO es un Tringulo Rectngulo] ] fin
En este ejemplo se evala una a una las proposiciones para determinar s uno de los ngulos es igual a 90. Ntese que la variable esRectngulo se inicializa con el valor NO, en caso de que cualquiera de los ngulos sea igual a 90, entonces la variable esRectangulo se cambia a SI. Finalmente se evala el valor resultante de esta variable para mostrar el mensaje si o no es un tringulo rectngulo.
EJEMPLO 3-19 Escribir un procedimiento en MicroMundos para leer los valores de dos de los tres ngulos internos de un tringulo y mostrar en pantalla Es un Tringulo Rectngulo si efectivamente es un tringulo de este tipo o, en caso contrario, mostrar No es un Tringulo Rectngulo. Utilizar operadores lgicos en la solucin. DISEO DEL ALGORITMO
TRADUCCIN DEL ALGORITMO para triangulo local "ANGULO1 local "ANGULO2 local "ANGULO3 pregunta [Ingrese el 1er ngulo del Tringulo] da "ANGULO1 respuesta pregunta [Ingrese el 2do ngulo del Tringulo] da "ANGULO2 respuesta da "ANGULO3 180 - :ANGULO1 - :ANGULO2 siotro (o :ANGULO1 = 90 :ANGULO2 = 90 :ANGULO3 = 90) [ anuncia [SI es un Tringulo Rectngulo] ] [ anuncia [NO es un Tringulo Rectngulo] ] fin Esta es una solucin ms simple y corta que la planteada en el ejemplo 3-16. La utilizacin del operador lgico o permite evaluar en una sola instruccin si alguno de los ngulos vale 90. TIP En un programa se pueden incluir varias clusulas condicionales anidadas. Los comandos si y siotro se pueden anidar de igual manera como se anida la funcin si (if) en la Hoja de Clculo. ACTIVIDAD Tomando como base el ejemplo anterior, realizar las modificaciones necesarias para que adicionalmente, el programa muestre en pantalla No es un Tringulo en caso de que cualquiera de los ngulos sea menor o igual a cero.
UNIDAD 4: DEPURACIN
CUANDO SE PRESENTAN PROBLEMAS
esta actividad se intenta identificar fallas sintcticas o lgicas en programas que no funcionan adecuadamente; una vez aislada la falla, esta se soluciona y se vuelve a probar el programa y a validar los resultados. Segn Jonassen (2003), para corregir fallas efectiva y eficientemente se requiere conocimiento del sistema (comprensin conceptual de cmo funciona el sistema), conocimiento procedimental (cmo llevar a cabo tanto procedimientos de solucin de fallas, como actividades de prueba) y conocimiento estratgico (saber cundo, dnde y por qu aplicar procedimientos de solucin de fallas y actividades de prueba). Ilustracin 4-1: Cuarta fase del ciclo de programacin. Es muy difcil elaborar procedimientos perfectos en un primer intento y la dificultad aumenta a medida que los problemas se vuelven ms complejos. Despus de traducir el algoritmo en un lenguaje de programacin como Logo, el procedimiento resultante debe ser probado y los resultados validados (revisin). A este proceso se le conoce como depuracin y contribuye a mejorar en los estudiantes la capacidad para resolver problemas puesto que la depuracin basada en la retroalimentacin es una habilidad til para toda la vida (Stager, 2003). La depuracin de un procedimiento hace parte fundamental del ciclo de programacin y desde el punto de vista educativo estimula en los estudiantes la curiosidad, la perspectiva, la comunicacin y promueve valores como responsabilidad, fortaleza, laboriosidad, paciencia y perseverancia. La programacin facilita un dilogo interior en el cual la retroalimentacin constante y el xito gradual empujan a los alumnos a ir ms all de sus expectativas (Stager, 2003). Otras dos actividades relacionadas con esta etapa, que no se tratarn en esta gua, son la afinacin y la documentacin. La primera consiste en realizar retoques para lograr una mejor apariencia del programa (en pantalla o en los resultados impresos) o para ofrecer funcionalidades ms all de los resultados esperados, especificados en la fase de anlisis del problema. La segunda tiene un carcter eminentemente comunicativo, con la documentacin de un programa se pone a prueba la capacidad del estudiante para informar a otras personas qu hace su programa, cmo lo hace y el significado de cada elemento utilizado.
Fallas de sintaxis
Las fallas sintcticas son las ms sencillas de identificar ya que el entorno de programacin indica dnde se ha producido el error y de que tipo es. Por ejemplo, MicroMundos reportar el error valorDos no tiene valor en prueba cuando, en el procedimiento prueba, se intenta mostrar el contenido de la variable valorDos sin haberla definido antes. En caso de presentarse una falla de sintaxis, el estudiante debe: Comprender el mensaje de error que reporta el ambiente de programacin (apoyarse en las opciones de ayuda que ofrece MicroMundos o en el docente). Examinar el cdigo del programa para identificar en cul instruccin se encuentra la falla Corregir la falla Probar el programa de nuevo EJEMPLO 4-1 Retomemos el ejemplo del estudiante que aprueba un examen cuando obtiene una calificacin mayor o igual a seis (ejemplo 3-14). Se requiere elaborar un procedimiento que pida al usuario una calificacin, aplique el criterio de aprobacin e imprima Aprobado o Reprobado, segn sea el caso. R/. ANLISIS DEL PROBLEMA Formular el problema: Es un problema sencillo de seleccin doble. Resultados esperados: Un aviso que reporte si el estudiante Aprob o Reprob el examen. Datos disponibles: La calificacin ingresada por el usuario. Para aprobar, la nota debe ser mayor o igual a 6.0. Restricciones: Aplicar el criterio de aprobacin. Procesos necesarios: Solicitar al usuario que ingrese la calificacin. Evaluar si la calificacin es igual o superior a 6.0; en caso de ser verdadero, reportar Aprobado; en caso contrario, reportar Reprobado.
Depuracin
La correccin de fallas es una de las situaciones que mayor frecuencia tienen en el mundo profesional. Con
instrucciones. En caso de presentarse una falla de lgica, el estudiante debe: Examinar el diagrama de flujo para detectar instrucciones que faltan, sobran o que se encuentran en la posicin incorrecta Asegurarse que las instrucciones codificadas en MicroMundos representan rigurosamente el diagrama de flujo Introducir puntos de control (banderas) en el cdigo y verificar el valor en ese punto de todas las variables y constantes; comparar esos valores con los de la prueba de escritorio en ese mismo punto. EJEMPLO 4-2 Continuamos con el mismo ejemplo: Elaborar un procedimiento que pida al usuario una calificacin, aplique el criterio de aprobacin e imprima Aprobado o Reprobado, segn sea el caso. Con el fin de ejemplificar una falla de lgica, se debe digitar en el rea de procedimientos de MMP el siguiente cdigo que representa el algoritmo del ejemplo 4-1.
para aprueba1 local "calificacin preguntas [Ingrese la Calificacin] da "calificacin respuesta siotro (o :calificacin > 6.0 :calificacin = 6.0) [ anuncia [Aprobado] ] [ anuncia [Reprobado] ] fin
TRADUCCIN DEL ALGORITMO para aprueba2 local "calificacin pregunta [Ingrese la Calificacin] da "calificacin respuesta siotro (o :calificacin < 6.0 :calificacin = 6.0) [ anuncia [Aprobado] ] [ anuncia [Reprobado] ] fin Obsrvese que el procedimiento aprueba2 se ejecuta correctamente; no aparece ningn error de sintaxis. Pero no funciona bien desde el punto de vista lgico. Si lo probamos con el valor 5, el procedimiento nos reporta que el estudiante aprob la materia, cuando esto no es correcto. Si lo probamos con 7, nos reporta que el estudiante reprob, cuando tampoco es exacto. En cambio, cuando lo probamos con 6 nos dice que el estudiante aprob y este dato si es correcto. El problema radica en que en el comando siotro se digit errneamente < en lugar de >, tal como aparece en el diagrama de flujo. Adicionalmente, en este ejemplo se puede observar la sintaxis de los operadores lgicos (y, o, no), mediante los cuales se unen proposiciones sencillas para construir proposiciones compuestas. Estos deben ir en seguida del parntesis que abre la proposicin: siotro (o :calificacin > 6.0 :calificacin = 6.0) La proposicin se lee as: calificacin mayor que 6.0 o calificacin igual a 6.0. En la deteccin y eliminacin de fallas en un procedimiento, cuenta mucho la cantidad de fallas
Obsrvese que el programa MMP arroja un mensaje de error cuando se ejecuta el procedimiento: No s cmo hacer preguntas en aprueba1. Este error se produce porque el comando pregunta est mal escrito, en su lugar se escribi preguntas. El problema se soluciona al escribir correctamente el comando indicado.
Fallas de lgica
Para identificar fallas de tipo lgico en un procedimiento que no se interrumpe en ningn momento y que arroja unos resultados, estos se deben revisar cuidadosamente. Uno de los procedimientos ms utilizados es el que se conoce como prueba de escritorio. Esta consiste seguir paso a paso cada una de las instrucciones del programa, asignando valores iniciales a variables y constantes y, realizando las operaciones indicadas en cada instruccin hasta llegar al final del programa. Luego, comparar los resultados que produce la prueba de escritorio con los resultados que arroja el programa; ambos conjuntos de resultados deben ser iguales. Esta metodologa es viable cuando los procedimientos son sencillos, con pocas
similares que el estudiante ha tenido oportunidad de resolver. La experiencia es un factor crucial; incluso, las fallas que se recuerdan con mayor precisin son aquellas cuya solucin present mayor dificultad (Jonassen, 2003). Con la depuracin, el estudiante realiza un conjunto de actividades que contribuyen a aprender de ese problema, a reinterpretarlo, a formular otros nuevos y a incrementar la comprensin de la solucin hallada. Esta incita a los estudiantes a preguntarse: puedo obtener el mismo resultado de una forma diferente? y puedo utilizar los mtodos empleados para solucionar este problema en la solucin de otros que se me han presentado antes?
Alto Ver detntodo, detnme y reporta. para contar :nmero si :nmero > 100 [alto] muestra :nmero contar :nmero + 5 fin anuncia palabra-o-lista ANUNCIA Muestra el mensaje en una caja de alerta. Haciendo clic anuncia "bienvenido en Aceptar se cierra la caja. Si mueve la caja de alerta a anuncia [Hola] anuncia texto1 una nueva posicin mientras est en la pantalla, esta Ver pregunta y respuesta. ser la posicin en que la prxima caja de alerta aparecer en el proyecto. atrs (at) nmero ATRS Ver ad, de, iz Mueve la tortuga hacia atrs. Los valores mnimos y mximos para atrs son -9999 y 9999, respectivamente. atrs 45 at control1 repite 4 [at 50 iz 90] azar nmero AZAR Devuelve un nmero entero positivo (incluyendo el 0) azar control1 menor que nmero. El nmero mximo es 9999. azar 2 Repite 26 [ad azar 30 de azar 60] bnombres BNOMBRES Borra de la memoria todas las variables globales. Ver nombres. MicroMundos no borra las variables cuando se abre o se bnombres crea un nuevo proyecto. Por lo tanto se recomienda usar bnombres cada vez que se inicie un nuevo proyecto. Cp CON PLUMA Pone la pluma a la tortuga en uso. La tortuga dejar una Ver sp. marca cuando se mueva, pero no cuando sea repite 6 [sp ad 10 cp ad 10] arrastrada. CUMPLEVECES Activa la lista de instruccin para cada uno de los valores especificados en la serie. La primera entrada es una lista con un nombre de variable temporal y un nmero mximo. La segunda entrada es una lista de instrucciones que usa la variable incluida en la primera lista. DA (ASIGNA) Crea una variable y le asigna el valor palabra-o-lista. Estas variables mantienen su valor siempre y cuando no se las borre o se cierre MicroMundos. cumpleveces serie lista-de-instruccin Ver cumplelista. cumpleveces [i 8][muestra :i] cumpleveces [i 360] [fcolor :i / 10 ad 40 at 40 de 2]
da vpalabra palabra-o-lista Ver nombra, cosa, bnombre, nombres y creavarproyecto. da "equipo [t1 t2 t3] da "texto texto1
DESCRIPCIN DERECHA Gira la tortuga hacia la derecha. El mximo valor para derecha es 9999. ESCRIBE Escribe la palabra o la lista en la caja de texto en uso. El texto va seguido de un retorno de lnea y de una secuencia de avance de lnea. ESPERA Origina una pausa en la ejecucin de un programa o de una instruccin. El tiempo se mide en dcimas de segundo. ESPERAHASTA Antes de activar otra instruccin, espera hasta que cierto-o-falso-lista-de-instrucciones devuelva cierto. La entrada debe ser una lista de instrucciones que devuelva cierto o falso cuando se active. FRASE Devuelve una lista formada por sus entradas (palabras o listas). Frase puede tomar ms de dos entradas cuando frase y sus entradas se encierran entre parntesis. Frase no mostrar los corchetes de las listas individuales dadas como entrada. RUMBO Fija el rumbo de la tortuga (en grados) en la direccin especificada. Los grados corresponden a los de la brjula: 0 apunta al norte, 90 al este, 180 al sur y 270 al oeste. Derecha e izquierda hacen girar a la tortuga un determinado nmero de grados partiendo de la posicin en que se encuentra en ese momento. En cambio, frumbo hace que la tortuga apunte en una direccin especfica, independientemente de su orientacin anterior. IZQUIERDA Gira la tortuga a la izquierda. El mximo valor para izquierda es 9999.
SINTAXIS MicroMundos de nmero; derecha nmero Ver ad, at,iz. derecha 45 repite 5 [de -90 ad 15 de 90 ad 15] escribe (es) palabra-o-lista Ver inserta. escribe "holaescribe [Bienvenidos de nuevo] escribe texto1 espera nmero espera 2 espera control1 esperahasta cierto-o-falso-lista-deinstrucciones esperahasta [tocando? "t1 "t2] t3, mt frase (fr) palabra-o-lista1 palabra-o-lista2 (frase palabra-o-lista1 palabra-o-lista2 palabra-o-lista3...) Ver lista. frase "uno [dos] (frase "una "gran [ciudad]) frase texto1 texto2 frumbo nmero Ver rumbo. frumbo 0 frumbo control1
izquierda (iz) nmero Ver ad, at, de. iz 45 ad 15 repite 4 [iz -90 ad 15 iz 90 ad 15] Limpia Ver bg y congelaf. limpia local palabra-o-lista Ver asigna, da y nombra. local "lista da "lista pginas
LIMPIA PANTALLA Limpia los grficos sin cambiar la posicin de la tortuga. LOCAL (VARIABLES) Crea una variable local en el procedimiento dentro del cual se utiliz el mando local. Local slo puede ser usado dentro de un procedimiento.
DESCRIPCIN MUESTRA Escribe una palabra o una lista en el Centro de Mando. Los corchetes exteriores de la lista no aparecen.
SINTAXIS MicroMundos
muestra palabra-o-lista muestra "hola muestra [hola todos] muestra :texto1 no cierto-o-falso NO Devuelve el valor lgico inverso de su entrada. Ver y y o. no 1 = control1 Nombres NOMBRES Ver bnombres Devuelve los nombres de todas las variables con sus muestra nombres valores. o cierto-o-falso1 cierto-o-falso2 O (o cierto-o-falso1 cierto-o-falso2 cierto-oDevuelve cierto si alguna de sus entradas devuelve cierto. Si se usan ms de dos entradas, o y sus entradas falso3...) Ver y y no. deben estar entre parntesis. o 1 = control1 control1 < 4 (o 1 = control1 control1 < 4 2 > control2) porsiempre palabra-o-lista-a-activar PORSIEMPRE Activa la entrada en forma repetitiva como un proceso Ver lanza, y Tiempo y Sincronizacin en paralelo independiente. Use detn, Detener Todo, o los Temas de Ayuda de MicroMundos. Ctrl+Inter para detener el proceso. porsiempre [ad 2] porsiempre "cuar porsiempre texto1 pregunta palabra-o-lista PREGUNTA Abre una caja de dilogo que muestra la pregunta y una Ver respuesta. pregunta "Bien? zona para escribir la respuesta. Respuesta devuelve lo pregunta [Cmo ests?] que se ha escrito en la caja de dilogo. Si se escribe pregunta texto1 una pregunta muy larga, solo aparecer la parte que quepa dentro del espacio dado. Si se arrastra la caja de dilogo a una nueva posicin mientras sta muestra la pregunta, sta ser la posicin en que la nueva caja de dilogo se abrir dentro del proyecto. repite nmero [lista-de-instrucciones] REPITE Activa la lista de instrucciones el nmero de veces Ver cumpleveces y cumplelista para especificado. opciones ms avanzadas. repite 96 [at 40 ad 40 de 4] respuesta RESPUESTA Devuelve el contenido de la ltima respuesta que se da valor respuesta escribi en la caja de dilogos de pregunta. Usando si respuesta = "s [ffig "contento] pregunta y respuesta, se pueden utilizar las palabras si respuesta = "no [ffig "triste] escritas en el teclado para crear un programa interactivo. si cierto-o-falso [lista-a-activar] SI Activa la lista de instrucciones slo si la proposicin de Ver siotro. la primera entrada devuelve cierto. si 5 > 2 [anuncia "correcto] SIOTRO Activa la primera lista de instrucciones si la proposicin devuelve cierto. Activa la segunda lista de instrucciones si la proposicin devuelve falso. SIN PLUMA Significa sin pluma. Saca la pluma a la tortuga en uso. La tortuga no dejar ningn trazo cuando se mueva. Y Devuelve cierto si todas sus entradas devuelven cierto. Si se utilizan ms de dos entradas, y debe estar entre parntesis junto con todas sus entradas. siotro cierto-o-falso [lista-de-instrucciones1] [lista-de-instrucciones2] Ver si. siotro colordebajo = 15 [ad 50] [ at 50] Sp Ver cp. repite 6 [sp ad 10 cp ad 10] y cierto-o-falso1 cierto-o-falso2 (y cierto-o-falso1 cierto-o-falso2 cierto-ofalso3...) Ver o y no. y1=13<4 (y 1 = 1 3 < 4 2 > 1)
Qu es un algoritmo Pseudocdigo Identificadores Variables Constantes Diagrama de flujo (smb.) Pensamiento algortmico Introduccin a la prog. Procedimientos Palabras reservadas Comentarios Procesos Interactividad usuario
Pensamiento algortmico Variables Constantes Operadores Expresiones Diagrama de flujo (elaboracin) Uso de software de AV (elaboracin) Procedimientos Estructura secuencial
Estructura de repeticin
Estructura condicional
Fallas de lgica Fallas de lgica Prueba de escritorio Prueba de escritorio Verificacin de resultados Verificacin de resultados Documentacin Afinamiento Operadores y expresiones Polinomios aritmticos Estructura de repeticin Multiplicacin Potenciacin Polgonos Crculos Expresiones Polinomios aritmticos Estructura condicional Proposiciones Relaciones de orden
TEMAS DE MATEMTICAS
ANEXO 4
ALGORITMOS Y PROGRAMACIN
UNA PROPUESTA DE CURRCULO
Esta propuesta hace parte del Modelo Curricular Interactivo de Informtica
http://www.eduteka.org/curriculo2/Herramientas.php?codMat=15
DEFINICIN
Algoritmos y programacin se definen como los procesos de formulacin de una solucin a una situacin planteada, apoyndose en conceptos y estructuras propias de la programacin.
Se busca que el estudiante utilice metodologas y estructuras secuenciales, iterativas y condicionales para analizar problemas, disear algoritmos, traducir algoritmos a un lenguaje de programacin y depurar procedimientos sencillos con el fin de solucionar problemas. Los estudiantes no elaborarn programas complejos, slo se concentrarn en la elaboracin de procedimientos.
ALCANCE
OBJETIVO GENERAL
Al terminar la instruccin en Algoritmos y Programacin, el estudiante debe estar en capacidad de utilizar metodologas y estructuras secuenciales, iterativas y condicionales para analizar problemas, disear algoritmos, traducir algoritmos a un lenguaje de programacin y depurar los procedimientos resultantes.
OBJETIVOS ESPECFICOS
Al finalizar la instruccin en esta herramienta informtica, el estudiante estar en capacidad de:
BSICO:
Comprender una metodologa para resolver problemas matemticos.
Conocer los elementos que tienen en comn la mayora de los problemas matemticos (estado inicial, meta, recursos y el estado actual de conocimientos de quien pretende resolverlos) Conocer las cuatro operaciones mentales que intervienen en la solucin de problemas matemticos (entender el problema, trazar un plan, ejecutarlo y revisar) Hacer conciencia sobre la utilizacin en la clase de matemticas de estas cuatro operaciones para resolver problemas
PERODOS DE CLASE: 2 LOGROS: Sin ayuda de referencias, describe brevemente, y en sus propias palabras, las cuatro operaciones mentales que intervienen en la solucin de problemas
matemticos. [A, F]
NOTA: Aunque Algoritmos y Programacin se puede integrar con varias asignaturas, las matemticas es un rea muy
adecuada ya que la forma de resolver problemas matemticos se asemeja mucho al ciclo de programacin. Comprender las etapas del ciclo de programacin de computadores.
Conocer las cuatro etapas del ciclo de programacin para resolver problemas con ayuda del computador (analizar el problema, disear un algoritmo, traducir el algoritmo a un lenguaje de programacin y depurar el programa) Comprender la similitud que hay entre las operaciones mentales que intervienen en la solucin de problemas matemticos y las etapas del ciclo de programacin Entender que la solucin de problemas matemticos mediante programacin tiene dos ciclos (uno en el que se resuelve el problema con lpiz y papel y otro en el que se automatiza la solucin) Diferenciar entre Sistema Operativo y Software de Aplicacin. Diferencias entre Software de Aplicacin y Procedimientos.
PERODOS DE CLASE: 1 LOGROS: Explica brevemente las cuatro etapas del ciclo de programacin para resolver problemas con ayuda del computador. [A, F]
Comprender qu es un algoritmo.
Comprender por qu no se debe empezar a disear un algoritmo hasta no haber analizado detalladamente los problemas que se desean resolver Identificar en el entorno: procesos, ciclos, rutinas o biorritmos que se puedan considerar como algoritmos (concepto intuitivo de algoritmo) Comprender que un algoritmo es un conjunto de pasos sucesivos y organizados en secuencia lgica Comprender la importancia de organizar en secuencia lgica los pasos de diversos procesos
PERODOS DE CLASE: 2 LOGROS: Describe al menos dos procesos, ciclos, rutinas o biorritmos que se den en el entorno y que puedan considerarse como algoritmos. [A, F]
Dada una lectura que describa una serie de instrucciones, sigue cada uno de los pasos indicados en esta, en el orden establecido. [F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema de la vida cotidiana (como hacer un jugo de fruta), construye un algoritmo en pseudocdigo para solucionarlo. [A, F]
PERODOS DE CLASE: 6 LOGROS: Dado un problema de la vida cotidiana, lista las variables y constantes presentes en este. [A, F]
Dada una lista de variables y constantes, les asigna nombres que pueda entender el lenguaje de programacin. [A, F] Dada una lista de variables y constantes, indica cmo asignarles valores a estos. [A, F]
Conocer los smbolos que se utilizan para representar algoritmos mediante diagramas de flujo.
Comprender que los diagramas de flujo han sido una de las tcnicas ms utilizadas para representar grficamente la secuencia de instrucciones de un algoritmo Identificar y recordar el significado de los principales smbolos estandarizados para elaborar diagramas de flujo (inicio, final, lneas de flujo, entrada por teclado, llamada a subrutina, saluda impresa, salida en pantalla, conector, decisin, iteracin, etc) Conocer las principales reglas para elaborar diagramas de flujo (encabezado, direccin de flujo, iniciacin de variables y constantes, etc)
PERODOS DE CLASE: 2 LOGROS: Dada una serie de smbolos para representar algoritmos, escribe al frente su significado. [A, F]
Dado un algoritmo sencillo, explica la funcin que realiza en cada uno de los pasos. [A, F]
PERODOS DE CLASE: 1 LOGROS: En sus propias palabras, describe brevemente, el entorno de trabajo que ofrece el entorno de programacin. [A, F]
PERODOS DE CLASE: 3 LOGROS: Crea un nuevo procedimiento, lo graba en un lugar establecido por el profesor, lo cierra; si es necesario, lo abre nuevamente para modificarlo. [A, F] ACTIVIDADES: Tema: Caricaturas http://eduteka.org/actividades/actividades.php?idH=501
Conocer la forma de llamar un procedimiento desde otro procedimiento Hacer comentarios en procedimientos Traducir una a una las instrucciones de los diagramas de flujo al lenguaje de programacin utilizado Elaborar procedimientos que acepten parmetros
PERODOS DE CLASE: 3 LOGROS: A partir de un algoritmo construido sobre un problema matemtico, lo traduce a un procedimiento en MMP. [A, F]
Abre un procedimiento y lo ejecuta. [A]
PERODOS DE CLASE: 2 LOGROS: Elabora un procedimiento que solucione un problema planteado por el docente, en el que solicite al usuario digitar alguna informacin. [F]
PERODOS DE CLASE: 2 LOGROS: En sus propias palabras, describe brevemente, los tipos de fallas que se pueden presentar en un procedimiento. [F]
Comprender en qu fases del ciclo de programacin se pueden producir las fallas de sintaxis y de precaucin.
Comprender qu es una falla de sintaxis Entender en qu fase del ciclo de programacin se pueden producir fallas de sintaxis Conocer las causas ms comunes por las que se producen las fallas de sintaxis Comprender el significado de los mensajes de error que presenta el compilador cuando detecta una falla de sintaxis y solucionarla. Conocer las medidas que se deben tomar para evitar las fallas de sintaxis Comprender qu es una falla de precaucin (recomendaciones tcnicas o warning error) Entender en qu fase del ciclo de programacin se pueden producir fallas de precaucin Conocer las causas ms comunes por las que se producen las fallas de precaucin Conocer las medidas que se deben tomar para evitar las fallas de precaucin
PERODOS DE CLASE: 2 LOGROS: Dada una serie de fallas que se pueden presentar en un procedimiento, las relaciona con las fases del ciclo de programacin en las cuales estas se pueden
producir. [F]
PERODOS DE CLASE: 2 LOGROS: Sin ayuda de referencias, lista los pasos propuestos para analizar problemas (formular el problema, precisar los resultados esperados, identificar los datos
disponibles, determinar las restricciones y establecer los procesos necesarios) y describe brevemente en qu consiste cada uno. [F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema de la vida cotidiana, lista las variables y constantes presentes en este. [A, F]
Dada una lista de variables y constantes, les asigna nombres que pueda entender el lenguaje de programacin. [A, F] Dada una lista de variables y constantes, indica cmo asignarles valores a estos. [A, F]
PERODOS DE CLASE: 4 LOGROS: Dado un algoritmo por el docente, identifica y explica las expresiones y operadores presentes en este [F] Pg.65 - 2-may-07 - Versin 1.0 - Descargue gratuitamente esta Gua: http://www.eduteka.org/AlgoritmosProgramacion.php
PERODOS DE CLASE: 4 LOGROS: Dado un problema matemtico (como sumar los nmeros pares comprendidos entre 2 y 1.000), construye un algoritmo en forma de diagrama de flujo para
solucionarlo. [F]
Reconocer el entorno de trabajo que ofrece un software para elaborar diagramas de flujo (mens, barras, rea de trabajo).
Entender la barra de ttulo Entender la barra de mens (Archivo, Edicin, Ver, Insertar, Formato, Ventana) Entender las barras de herramientas Entender la barra de desplazamiento Entender la barra de estado Entender el rea de trabajo Entender las opciones de zoom (aumentar/disminuir la escala de visualizacin)
PERODOS DE CLASE: 1 LOGROS: En sus propias palabras, describe brevemente, el entorno de trabajo que ofrece el software seleccionado para elaborar diagramas de flujo. [A, F] NOTA: Ver la resea de algunas herramientas descargables de Internet que facilitan el Aprendizaje Visual. Incluye descripcin de software para construir Diagramas de Flujo http://www.eduteka.org/HerramientasVisuales.php
Utilizar apropiadamente las funciones bsicas de un software para elaborar diagramas de flujo.
Abrir y cerrar la aplicacin Abrir y cerrar un diagrama de flujo existente Crear instrucciones nuevas dentro de un diagrama de flujo utilizando el smbolo apropiado Crear lneas de flujo entre las instrucciones de un diagrama de flujo Adicionar un ttulo general que identifique un diagrama de flujo Seleccionar ttulo, instrucciones o lneas de flujo Mover de posicin el ttulo, las instrucciones o las lneas de flujo Eliminar ttulo, instrucciones o lneas de flujo Utilizar el comando deshacer Guardar un diagrama de flujo en una unidad de almacenamiento local o remota Guardar un diagrama de flujo para que pueda abrirse con otras versiones del mismo software. Exportar un diagrama de flujo a un formato grfico para que lo puedan leer otros programas Utilizar las funciones de ayuda que ofrece el software
PERODOS DE CLASE: 3 LOGROS: Utilizando un software para elaborar diagramas de flujo, crea un nuevo diagrama, lo graba en un lugar establecido por el profesor, lo cierra; si es necesario,
lo abre nuevamente para modificarlo. [A, F]
PERODOS DE CLASE: 1 LOGROS: Dado un problema por el profesor, elabora un procedimiento para solucionarlo; la solucin debe incluir el anlisis del problema y el diagrama de flujo. [F]
PERODOS DE CLASE: 6 LOGROS: A partir de un algoritmo construido sobre un problema matemtico, lo traduce a un procedimiento en MMP. [A, F]
Abre un procedimiento y lo ejecuta. [A] Elabora un procedimiento que solucione un problema planteado por el docente, en el que solicite al usuario digitar alguna informacin. [F] Sin ayuda de referencias, describe con sus propias palabras qu es en programacin una estructura secuencial. [F]
Identificar los mensajes de error ms comunes que presenta el lenguaje de programacin utilizado (fallas de sintaxis) y si los hay corregirlos.
Comprender el significado de los mensajes de error que presenta el compilador cuando detecta una falla de sintaxis
Realizar acciones correctivas en el programa cuando el compilador reporte una falla de sintaxis
PERODOS DE CLASE: 2 LOGROS: Dado por el docente un procedimiento que contenga fallas de sintaxis, identifica y corrige dichas fallas. [F]
Comprender en qu fases del ciclo de programacin se pueden producir las fallas de concepcin y de lgica.
Comprender qu es una falla de concepcin (mala formulacin del problema) Entender en qu fase del ciclo de programacin se pueden producir fallas de concepcin Conocer las causas ms comunes por las que se producen las fallas de concepcin Conocer las medidas que se deben tomar para evitar las fallas de concepcin Comprender qu es una falla de lgica (algoritmos mal diseados) Entender en qu fase del ciclo de programacin se pueden producir fallas de lgica Conocer las causas ms comunes por las que se producen las fallas de lgica Conocer las medidas que se deben tomar para evitar las fallas de lgica
PERODOS DE CLASE: 2 LOGROS: Dado un algoritmo elaborado por otro estudiante, realiza la prueba de escritorio y predice que resultado arrojar el computador con un conjunto
determinado de datos de entrada. [F]
PERODOS DE CLASE: 2 LOGROS: Dado un algoritmo elaborado por otro estudiante, realiza la prueba de escritorio y predice que resultado arrojar el computador con un conjunto
determinado de datos de entrada. [F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema por el docente, realiza el primer paso de anlisis (formular problemas) siguiendo las indicaciones suministradas en clase. [F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema por el docente, realiza el primer paso de anlisis (formular problemas) siguiendo las indicaciones suministradas en clase. [F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema por el docente, realiza el segundo paso de anlisis (precisar el resultado esperado) siguiendo las indicaciones suministradas en clase. [F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema por el docente, realiza el tercer paso de anlisis (identificar los datos disponibles) siguiendo las indicaciones suministradas en clase. [F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema por el docente, realiza el cuarto paso de anlisis (determinar las restricciones) siguiendo las indicaciones suministradas en clase. [F] Pg.67 - 2-may-07 - Versin 1.0 - Descargue gratuitamente esta Gua: http://www.eduteka.org/AlgoritmosProgramacion.php
PERODOS DE CLASE: 3 LOGROS: Dado un problema por el docente, realiza el quinto paso de anlisis (establecer los procesos necesarios) siguiendo las indicaciones suministradas en clase.
[F]
PERODOS DE CLASE: 3 LOGROS: Dado un problema por el docente que requiera plantear expresiones, identifica variables y constantes y las une mediante operadores para establecer las
expresiones correctas que resuelvan el problema. [F]
PERODOS DE CLASE: 6 LOGROS: Sin ayuda de referencias, describe con sus propias palabras qu es en programacin una estructura iterativa (de repeticin). [F]
Dado por el docente un problema que requiera para su solucin una estructura iterativa (repeticin), elabora un procedimiento con una estructura iterativa que contenga y controle una estructura secuencial; la solucin debe incluir el anlisis del problema, el diagrama de flujo y la prueba de escritorio. [F]
PERODOS DE CLASE: 2 LOGROS: Dado por el docente un algoritmo y el respectivo procedimiento los cuales contengan fallas de lgica, identifica y corrige dichas fallas. [F]
PERODOS DE CLASE: 2 LOGROS: Dado por el docente un algoritmo y el respectivo procedimiento los cuales contengan fallas de lgica, identifica y corrige dichas fallas. [F]
Sin ayuda de referencias, explica con sus propias palabras cul es la importancia de verificar los resultados que produce un programa de computador. [F]
Reflexionar sobre la conveniencia de emplear una metodologa con pasos ordenados para analizar problemas.
Hacer conciencia de la importancia y conveniencia de emplear una metodologa para analizar problemas Reflexionar sobre la importancia de poner por escrito el resultado del anlisis de problemas (para cada uno de los pasos)
PERODOS DE CLASE: 1 LOGROS: Elabora un ensayo en el que plasma sus reflexiones cobre la conveniencia o no de emplear una metodologa con pasos ordenados para aprender a analizar
problemas. [F]
PERODOS DE CLASE: 3 LOGROS: Sin ayuda de referencias, contrasta las diferencias entre los tipos de datos que acepta el lenguaje de programacin utilizado. [F]
Expresar apropiadamente las proposiciones para que el lenguaje de programacin las pueda entender y evaluar Utilizar el orden correcto de ejecucin de las instrucciones del algoritmo Elaborar procedimientos con una estructura condicional que contenga y controle a una estructura secuencial Reflexionar sobre el papel que cumple el lenguaje en la formulacin y uso de relaciones de orden y de proposiciones Reflexionar sobre los tipos de problemas que requieren utilizar la estructura condicional en la solucin Reflexionar sobre la importancia que tiene reconocer las estructuras de solucin de problemas en la forma de planear secuencias de acciones
PERODOS DE CLASE: 6 LOGROS: Sin ayuda de referencias, describe con sus propias palabras qu es en programacin una estructura condicional. [F]
Dado por el docente un problema que requiera para su solucin una estructura condicional, elabora un procedimiento con una estructura condicional que contenga y controle una estructura secuencial; la solucin debe incluir el anlisis del problema, el algoritmo en forma de diagrama de flujo y la prueba de escritorio. [F]
PERODOS DE CLASE: 2 LOGROS: A partir de la lectura de problemas, identifica correctamente el resultado esperado, los datos disponibles, las restricciones y los procesos necesarios para
resolverlos. [F] Dada una situacin del mundo real, enuncia (formula) un problema que tenga todos los elementos (resultado esperado, datos disponibles, restricciones y procesos necesarios) y explica por qu es un problema. [F]
PERODOS DE CLASE: 1 LOGROS: Sin ayuda de referencias, explica brevemente y con sus propias palabras cul es la importancia de documentar los procedimientos. [F]
PERODOS DE CLASE: 2 LOGROS: Sin ayuda de referencias, explica brevemente y con sus propias palabras cul es la importancia de ajustar (afinar o mejorar) los procedimientos. [F] NOTA GENERAL: El nmero de clases que aparece asociada a cada uno de los objetivos especficos indica la cantidad de perodos de clase, de 55 minutos, estimado por los profesores participantes, necesarios para impartir la instruccin y realizar ejercicios y prcticas necesarios para que el estudiante pueda dominar lo que se pretende ensear.
ESTNDARES
A. Operaciones y Conceptos Bsicos B. Problemas Sociales, ticos y Humanos C. Herramientas de las TIC para la Productividad D. Herramientas de las TIC para la Comunicacin E. Herramientas de las TIC para la Investigacin F. Herramientas de las TIC para la Solucin de Problemas y la Toma de Decisiones
(MEN). Moursund, David (1999): Project-Based learning using information technology; ISTE Publications. ---------- (1996): Increasing your expertise as a problem solver, some roles of computers; [Consulta en lnea: Universidad de Oregon, Enero 28 de 2004, http://darkwing.uoregon.edu/~moursund/PSBook1996/introduction.htm] NAP (2004): Being fluent with information technology; National Academy Press, Washington, D.C. Nio, Carlos Alberto & Rodrguez, Beryeny (1999): Mi libro matemtico 5; Ediciones Magster, Bogot. Olmos Gil, Tulio (2003): Lgica para nios; [Consulta en lnea: Aldea Educativa, Enero 08 de 2004, http://www.terra.com.ve/aldeaeducativa/temas/tareas28726.html] Onrubia, Javier & Rochera, Maria Jos & Barber, Elena (2001): La enseanza y el aprendizaje de las matemticas: una perspectiva psicolgica; captulo 19 del libro Desarrollo psicolgico y educacin, Csar Coll (compilador), Alianza Editorial, Madrid. Papert, Seymour (1993): Mindstorms: Children, computers, and powerful ideas; Basic Books, New York, segunda edicin. Piaget, Jean (1964): Seis estudios de psicologa; Seix Barral, Barcelona, 1977 (ditions Gonthier, Ginebra, 1964). ---------- (1969a): Biologa y conocimiento; Siglo XXI Editores, Mxico. Piaget, Jean & Inhelder Brbel (1969b): Psicologa del nio; Ediciones Morata, Madrid. Polya, George (1957): How to solve it; Princeton University Press, segunda edicin. Ritter M., Grace Alexandra & Borja P., Ral Andr (2000): Algoritmos y Programacin; Universidad Icesi, Cali. Rizo Cabrera, Celia & Campistrous Prez, Luis (2005): Didctica y solucin de problemas; Ponencia presentada en el XIX Simposio Costarricense sobre Matemticas, Ciencias y Sociedad [Consulta en lnea: Universidad Nacional Heredia, Marzo 16 de 2007, http://www.cimm.ucr.ac.cr/simposios/recursos/XIX/campistrous.pdf ] Rodrguez, Benjamn & Castro Walter (1995): Serie matemtica construyamos 5; Educar Editores, Bogot. Rojas A., Vicente & acato C., Jos (1980): Tcnica de flujogramas I; Editora Andina, Quito, sptima edicin. Rumbaugh, James y Otros (1996): Modelado y diseo orientado a objetos, metodologa OMT; Prentice Hall, Espaa. Sabino, Carlos (1980): El proceso de investigacin, Ed. El Cid Editor, Bogot. Snchez, Margarita A. de (1991): Desarrollo de habilidades de pensamiento, Editorial Trillas, Mxico, Decimocuarta reimpresin: 2004. Savater, Fernando (1991): tica para Amador, Editorial Ariel, Barcelona. ---------- (1996): El valor de educar; Editorial Ariel, Barcelona. Serrano Prez, Hugo (1998): Razonamiento abstracto; Fnix impresores, Cali. Sierra Vsquez, Francisco Javier (2001): La tecnologa informtica y la escuela; [Consulta en lnea: Ciberhabitat, Enero 8 de 2004, http://ciberhabitat.com/escuela/maestros/tiyescuela/ti_3.htm] Schunk, Dale H. (1997): Teoras de aprendizaje; Prentice Hall, Mxico, segunda edicin. Solano, Guillermo (1991): Diseo lgico de exmenes; Editorial Trillas, Mxico. Soto Sarmiento, ngel Alonso (1997): Educacin en tecnologa, un reto y una exigencia social; Cooperativa Editorial Magisterio, Bogot. Spoor, Cunera & Jinich, Emanuel (1990): Primeros pasos en Logo; McGraw Hill, Mxico. Stager, Gary (2003): En pro de los computadores; [Consulta en lnea: Eduteka, Enero 13 de 2004, http://www.eduteka.org/ProComputadores.php] Treff, August & Jacobs, Donald (1983): Life skills mathematics; Media Materials, Baltimore. Trejos Buritic, Omar Ivn (1999): La esencia de la lgica de programacin; Editorial Papiro, Pereira. Tucker, Allen editor- (2003): A model currculum for K-12 computer science, Final report of the ACM K-12 education task force curriculum committee; [Consulta en lnea: ACM, Septiembre 12 de 2004, http://www.acm.org/education/K12] Vasta, Ross y Otros (1996): Psicologa infantil; Ariel, Barcelona. Watt, Daniel (1987): Aprendiendo con IBM Logo; McGraw-Hill, Bogot. Wilson, James; Fernndez, Mara & Hadaway, Nelda (1993): Technology and problem solving; [Consulta en lnea: Universidad de Georgia, Abril 6 de 2004, http://jwilson.coe.uga.edu/emt725/Pssyn/Pssyn.html] Woolfolk, Anita E. (1999): Psicologa educativa; Prentice Hall, Mxico, sptima edicin. Yarce, Jorge (2004): Valor para vivir los valores; Editorial Norma, Bogot. Zea Restrepo, Claudia Mara y Otros (2000): Informtica y escuela, un enfoque global (Conexiones); Editorial Universidad Pontificia Bolivariana, Medelln. Zemelman, Steven; Daniels, Harvey; & Hyde, Arthur (1998): Mejores prcticas en matemticas; Editorial Heineman; [Consulta en lnea: Eduteka, Julio 21 de 2004, http://www.eduteka.org/MejoresPracticas.php] Zuleta Estanislao (1985): Educacin y democracia; Hombre Nuevo Editores, Medelln, quinta edicin. ---------- (1996): Lgica y crtica; Editorial Univalle, Cali.