.:: Bimestre IV ::.

.:: Bimestre IV ::.


1. [ALGORITHM] ALGORITMOS Y PROGRAMACIÓN

1.1 Tema 1: Desarrollo de habilidades de pensamiento. Accede Aquí.
1.1.1 Solución de problemas. Accede Aquí.
1.1.1.1 Método Algorítmico. Accede Aquí.
1.1.1.2 Método Heurístico. Accede Aquí.

1.1.2 Creatividad. Accede Aquí.
1.1.2.1 Desarrollo de la creativividad. Accede Aquí.
1.1.2.2 Espiral del pensamiento creativo. Accede Aquí.
1.1.2.3 Video: La creatividad en la vida cotidiana. Accede Aquí.
1.1.2.4 Video: Tres atributos de la inteligencia: diversa, dinámica y distintiva. Accede Aquí.

1.2 Tema 2: Algoritmos y solución de problemas.
1.2.1 Algoritmos, conceptos básicos. Accede Aquí.
1.2.2 Representación de algoritmos.
1.2.2.1 Pseudocódigo.
- PSeInt, una herramienta para aprender la lógica de programación. Accede Aquí.
1.2.2.2 Diagramas de flujo
- DFD. Descárgalo Aquí.
1.2.3 Algorítmos, estructuras básicas. Accede Aquí.
1.2.4 Depurar errores.

1.3 Ejercicios. Problemas a resolver. Descárgalo Aquí.

1.4 Tema 3: Scratch, entorno de programación multimedia.

1.5 Tema 4: Squeak, simulador de mundos virtuales.

2. [PROJECT] PROYECTO FINAL

Algoritmos, conceptos básicos


Aproximación intuitiva a los algoritmos

Como ya se ha dicho, un lenguaje de programación no es más que una forma de representar un algoritmo, así pues, ¿qué es un algoritmo? Antes de proporcionar una definición precisa del término daremos un pequeño rodeo puesto que los algoritmos han acompañado a la humanidad desde hace mucho tiempo, con la salvedad de que la mayor parte eran dados por supuesto o bien se les denominaba con términos diferentes. A continuación se muestran algunos ejemplos clásicos.

Algoritmo “obvio a posteriori”: Instrucciones para subir una escalera.
[...] Las escaleras se suben de frente, pues hacia atrás o de costado resultan particularmente incómodas. La actitud natural consiste en mantenerse de pie, los brazos colgando sin esfuerzo, la cabeza erguida aunque no tanto que los ojos dejen de ver los peldaños inmediatamente superiores al que se pisa, y respirando lenta y regularmente. Para subir una escalera se comienza por levantar esa parte del cuerpo situada a la derecha abajo, envuelta casi siempre en cuero o gamuza, y que salvo excepciones cabe exactamente en el escalón. Puesta en el primer peldaño dicha parte, que para abreviar llamaremos pie, se recoge la parte equivalente de la izquierda (también llamada pie, pero que no ha de confundirse con el pie antes citado), y llevándola a la altura del pie, se le hace seguir hasta colocarla en el segundo peldaño, con lo cual en éste descansará el pie, y en el primero descansará el pie. (Los primeros peldaños son siempre los más difíciles, hasta adquirir la coordinación necesaria. La coincidencia de nombre entre el pie y el pie hace difícil la explicación. Cuídese especialmente de no levantar al mismo tiempo el pie y el pie). Llegando en esta forma al segundo peldaño, basta repetir alternadamente los movimientos hasta encontrarse con el final de la escalera. Se sale de ella fácilmente, con un ligero golpe de talón que la fija en su sitio, del que no se moverá hasta el momento del descenso.


Algoritmo de “andar por casa”: Tortilla de patatas a la española (6 personas)
Ingredientes: - 2 vasos (de los de agua) de aceite (1/2 litro) - sal - 8 huevos - 1 kg de patatas Se lavan las patatas una vez peladas, y se secan con un paño; se parten en dos a lo largo y después se cortan en láminas finitas. Se pone el aceite en la sartén a calentar y se fríen las patatas, moviéndolas de vez en cuando y echándoles un poco de sal. Una vez fritas (más o menos doradas, según gusten), se separan y se ponen a escurrir en un colador grande. Se quita el aceite sobrante de la sartén. Aparte se baten los huevos con tenedor y muy fuerte; se pone un poco de sal; en el mismo plato de los huevos se echan las patatas y se mueven con un tenedor. En una sartén grande (o en dos pequeñas) se ponen 3 cucharadas soperas de aceite para que sólo cubra el fondo. Cuando está caliente se vierte la mezcla de huevos y patatas. Se mueve la sartén por el mango para que no se pegue la tortilla. Cuando se vea que está bien despegada y dorada (esto depende del gusto de cada cual), se pone una tapadera encima, se vuelca la sartén y se escurre suavemente la tortilla otra vez en la sartén. Se vuelve a mover por el mango y cuando esté cuajada (a gusto) se pasa a una fuente redonda y se sirve.

Algoritmo “infantil”: Multiplicación de números enteros
Para obtener el producto de dos números enteros utilizando lápiz y papel se debe escribir el primer factor (multiplicando) y, justo debajo y alineado a la derecha, el segundo factor (multiplicador). Se recorren todas las cifras del multiplicador de derecha a izquierda y se operan con cada una de las cifras el multiplicando, también de derecha a izquierda, escribiendo los resultados intermedios en líneas separadas; cada línea estará desplazada una posición a la izquierda respecto a la línea inmediatamente superior. Una vez se han obtenido todos los resultados intermedios se suman columna a columna obteniéndose el resultado final.


Si se estudia con atención cada uno de los algoritmos anteriores descubriremos una serie de características interesantes que definen la naturaleza de lo que es un algoritmo:

- Un algoritmo resuelve un problema específico: subir una escalera, obtener una tortilla de patatas, hacer una multiplicación o determinar el máximo común divisor de dos números.

- Un algoritmo es llevado a cabo por una entidad que trabaja en un entorno dado: una persona cuyo universo inmediato se reduce a su propio cuerpo y una escalera; un cocinero con una sartén, huevos, patatas, aceite, sal y cebolla; o un niño con lápiz y papel.

- Un algoritmo consta de una serie de pasos que deben llevarse a cabo siguiendo una secuencia marcada: algunos de los pasos en uno de los algoritmos anteriores serían: dar la vuelta a la tortilla, batir los huevos, pelar las patatas o cascar los huevos; dichos pasos deben aplicarse en un orden prefijado y no de cualquier manera.

- Un algoritmo se aplica de forma mecánica: un algoritmo no precisa decisiones subjetivas ni creatividad en su aplicación, cualquiera con una receta adecuada para obtener tortilla de patatas logrará una tortilla de patatas. Sin embargo, sí es necesario un acto creativo para desarrollar un nuevo algoritmo.

- Un algoritmo termina en un tiempo finito: todos los algoritmos deben finalizar, pueden tardar más o menos tiempo en lograr un resultado pero dicho tiempo debe ser finito.


Definición de algoritmo. Etimología del término algoritmo

En resumen, Un algoritmo es una secuencia de pasos que es llevado a cabo de forma mecánica y sistemática por un actor que se desenvuelve en un entorno dado para resolver un problema determinado en un tiempo finito.
Esa podría ser una definición válida de algoritmo, otra posible definición sería la siguiente:

Un algoritmo es una combinación de instrucciones combinadas de forma adecuada para resolver un determinado problema en una cantidad finita de tiempo. Cada instrucción es una indicación sencilla y no ambigua.

En estos momentos, el alumno debería tener bastante claro qué es un algoritmo, en qué consiste y dar ejemplos de algoritmos; también es probable que se esté preguntando de dónde procede el mismo término, “ALGORITMO”, ¿por qué denominamos “algoritmos” a los algoritmos y no “recetas” o “combinaciones de indicaciones sencillas y no ambiguas...”?


El término proviene de Mahommed ibn Musa al-Khowârizmî (Mahommed, hijo de Musa, natural de Kharizm), matemático persa del siglo IX; las matemáticas le deben la introducción del sistema de numeración actual y del álgebra. En su libro De numero indiorum (Sobre los números hindúes) proporciona las reglas para realizar las operaciones aritméticas (con los nuevos números, por supuesto), dichas reglas se denominaron “reglas de al-Khowârizmî” y, por deformación “algoritmos”, haciéndose extensivo el término a cualquier conjunto de reglas para resolver un problema determinado.


Elementos participantes en la realización de un algoritmo

Al mencionar las características fundamentales de los algoritmos decíamos que un algoritmo es llevado a cabo por una entidad que trabaja en un entorno dado. En los ejemplos anteriores la entidad era un ser humano y el entorno era el propio entorno físico que le rodeaba; sin embargo, en esta asignatura los algoritmos que nos interesan no van a ser aplicados por un individuo (no sería práctico ni eficiente) sino por un instrumento mecánico. Así, de cara a una
descripción “aséptica” de los algoritmos se emplearán los siguientes términos para referirnos a los elementos que participan en un algoritmo:

- Procesador: un procesador es un ente que es capaz de entender los pasos (acciones) que componen el algoritmo y llevarlos a cabo (ejecutarlos).
- Entorno: es el conjunto de materiales necesarios para la ejecución del algoritmo.
- Acción: es un suceso, llevado a cabo por el procesador, que modifica el entorno.


Al aplicar estos conceptos al algoritmo de la tortilla de patatas podemos ver que el procesador es el cocinero, el entorno son los ingredientes (huevos, patatas, cebolla) y las acciones cada uno de los actos que se aplican sobre los ingredientes (cascar, batir, pelar, trocear, salar, freir, etc).
Si, en cambio, se aplican a un algoritmo que se vaya a ejecutar en un ordenador tenemos que el procesador es el ordenador, el entorno son los datos con los que va a trabajar y las acciones serían todas aquellas operaciones que el ordenador puede realizar sobre los datos (sumar, restar, comparar, etc).

Espiral del Pensamiento Creativo

Con el fin de promover el desarrollo de la creatividad, aquí se propone utilizar la Espiral del Pensamiento Creativo propuesta por Mitchel Resnick (2007). En esta, los estudiantes imaginan lo que quieren hacer; crean un proyecto basado en sus ideas; juegan con sus ideas y creaciones; comparten sus ideas y creaciones con otros y reflexionan sobre sus experiencias; lo anterior los lleva a imaginar nuevas ideas y nuevos proyectos. La espiral genera un proceso indefinido de mejoramiento continuo.

Espiral del Pensamiento Creativo diseñada por el Dr. Mitchel Resnick

Desarrollo de la creativividad


Una de las cuestiones en torno a la creatividad que aún no tiene respuesta definitiva es si esta se puede desarrollar o simplemente se nace con dicha “genialidad” (C mayúscula).

Respecto al genio creativo, el Consorcio para la Creatividad considera que éste es un discurso posromántico apoyado por quienes han visto la creatividad únicamente como una cualidad especial de pocas personas, generalmente artistas, tales como escritores, músicos, pintores, etc (Banaji & Burn, 2006). Los que explican la creatividad desde una perspectiva basada en características de la personalidad afirman que las personas creativas tienen rasgos comunes: buen humor; confianza en sí mismos; flexibilidad y adaptabilidad; alta capacidad de asociación; sensibilidad; curiosidad intelectual; percepción y observación agudas; iniciativa para tomar riesgos; imaginación; expresividad; capacidad crítica; entusiasmo; y, tenacidad (López, 2000). Por el contrario, quienes no son creativos presentan recurrentemente algunas de los siguientes rasgos: tienden a especializarse en ciertos temas; son extremadamente racionales; les falta confianza en si mismos; no tienen motivación; su capacidad para escuchar es reducida; respetan la autoridad en exceso; no son buenos observadores; y, tienen deficiente pensamiento crítico.

Sin embargo, buena parte de los autores que han trabajado en profundidad el tema de la creatividad, entre ellos Resnick, De Bono y Johansson, no solo argumentan que si es posible desarrollarla, sino que aportan propuestas concretas para trabajarla en el aula de clase. Además, plantean que las siguientes habilidades cognitivas, susceptibles de desarrollar, están presentes en las personas consideradas como creativas: se plantean nuevos objetivos; exploran un mayor número de alternativas; evalúan, durante el transcurso del proceso de solución, los objetivos, las alternativas y las tareas; se aseguran de entender a cabalidad los problemas; son observadores; usan la abstracción; usan metáforas y analogías; desglosan la tarea en subtareas y desarrollan productos intermedios; y, usan estrategias metacognitivas (López, 2000).

El planteamiento de problemas inesperados busca complementar el enfoque de solución de problemas predefinidos que para resolverlos pueden hacer uso de metodologías como la propuesta por Polya. Es precisamente esta metodología la que se ha utilizado para resolver problemas matemáticos; sin embargo, algunos docentes han manifestado preocupación ya que si bien, la metodología ayuda a que los estudiantes estructuren su pensamiento, muchos de ellos se encasillan en ella y les cuesta trabajo encontrar soluciones alternativas.

En este sentido, entornos de programación como Scratch y MicroMundos, comprometen a los estudiantes en la búsqueda de soluciones innovadoras a problemas inesperados; no se trata solamente de aprender a solucionar problemas de manera predefinida, sino de estar preparado para generar nuevas soluciones a medida que los problemas se presentan (Resnick, 2007).

Por su parte, formular alternativas, se basa en el primer principio básico del Pensamiento Lateral propuesto por De Bono (1970): “cualquier modo de valorar una situación es sólo uno de los muchos modos posibles de valorarla”. La búsqueda de alternativas a una situación o problema parece un proceso típico del pensamiento lógico; sin embargo, desde el punto de vista de la creatividad no se busca la mejor alternativa sino la formulación del mayor número posible de alternativas. Por lo tanto, es conveniente fijar de entrada y poner por escrito, el número de alternativas que los estudiantes deben plantear. Desde la lógica, por lo general la búsqueda se interrumpe cuando se halla una alternativa que parece satisfactoria.

Creatividad


En los últimos años la creatividad entró a formar parte de las prioridades de los países con sistemas educativos avanzados. Programar Computadores puede atender el desarrollo de esta capacidad y ayudar a los estudiantes a convertirse en pensadores creativos, de forma que estén mejor preparados para vivir en esta Sociedad que la demanda.

De acuerdo con el Diccionario de la Real Academia Española (RAE), creatividad es la facultad de crear o la capacidad de creación. Por su parte, la enciclopedia Microsoft Encarta define la Creatividad como la capacidad de inventar algo nuevo, de relacionar algo conocido de forma innovadora o de apartarse de los esquemas de pensamiento y conducta habituales. Según Wikipedia, la creatividad es un proceso mental y social que implica generar nuevas ideas o conceptos, o nuevas asociaciones entre ideas y conceptos conocidos, lo que habitualmente produce soluciones originales. Las definiciones anteriores se refieren al acto de inventar cualquier cosa nueva (Ingenio), a la capacidad de encontrar soluciones originales y a la voluntad de modificar o transformar el mundo.

Ana Craft (2001) anota que las definiciones de creatividad más aceptadas en los últimos 50 años son aquellas que unen creatividad e imaginación. Este enfoque sugiere que cada persona tiene potencial creativo ya que este es un aspecto fundamental de la naturaleza humana. Ella se refiere a la “creatividad con c minúscula” como la habilidad para hacer frente, de manera efectiva, a los retos y cambios que nos plantea la vida en el siglo XXI. Esta es la creatividad que sirve para afrontar tareas cotidianas (elaborar una nueva receta o un arreglo floral, escribir una carta o poema, enseñar un nuevo truco a alguien, etc). También entra en juego cuando se deben superar obstáculos tales como desempleo y pobreza o aprovechar oportunidades. Esta “creatividad” se contrapone a la “Creatividad con C mayúscula” propuesta por el psiquiatra Gene Cohen (citado por Banaji & Burn, 2006), que caracteriza los logros extraordinarios de personas poco corrientes como artistas renombrados, científicos e inventores.

Stenberg (1997), autor reconocido en este campo, argumenta que la creatividad no es solo una capacidad, sino un proceso en el que intervienen tres tipos de inteligencia: creativa (ir más allá de lo dado y engendrar ideas nuevas e interesantes), analítica (analizar y evaluar ideas, resolver problemas y tomar decisiones) y práctica (traducir teorías abstractas en realizaciones efectivas). Estas dos últimas inteligencias aportan la posibilidad de diferenciar entre ideas innovadoras buenas y malas y, además, relacionarlas con la vida cotidiana (López, 2000). Por su parte, Gardner (1993) define a la persona creativa como alguien que “regularmente resuelve problemas, genera productos o define nuevos cuestionamientos en un dominio, de manera que en principio se considera nueva pero que al final llega a ser aceptada por un grupo cultural particular”.

Método Heurístico

Se basa en la utilización de reglas empíricas para llegar a una solución. El método heurístico conocido como “IDEAL”, formulado por Bransford y Stein (1984), incluye cinco pasos: Identificar el problema; definir y presentar el problema; explorar las estrategias viables; avanzar en las estrategias; y lograr la solución y volver para evaluar los efectos de las actividades (Bransford & Stein, 1984).

El matemático Polya (1957) también formuló un método heurístico para resolver problemas que se aproxima mucho al ciclo utilizado para programar computadores. A lo largo de este curso se utilizará este método propuesto por Polya.
Según 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 matemáticas 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, Fernández & Hadaway, 1993). Cuando estas etapas se siguen como un modelo lineal, resulta contraproducente para cualquier actividad encaminada a resolver problemas.

Es necesario hacer énfasis en la naturaleza dinámica y cíclica de la solución de problemas. En el intento de trazar un plan, los estudiantes pueden concluir que necesitan entender mejor el problema y deben regresaa la etapa anterior; o cuando han trazado un plan y tratan de ejecutarlo, no encuentran cómo hacerlo entonces, la actividad siguiente puede ser intentar con un nuevo plan o regresar y desarrollar una nueva comprensión del problema (Wilson, Fernández & Hadaway, 1993; Guzdial, 2000).

1. COMPRENDER EL PROBLEMA.
Leer el problema varias veces
Establecer los datos del problema
Aclarar lo que se va a resolver (¿Cuál es la pregunta?)
Precisar el resultado que se desea lograr
Determinar la incógnita del problema
Organizar la información
Agrupar los datos en categorías
Trazar una figura o diagrama.

2. HACER EL PLAN.
Escoger y decidir las operaciones a efectuar.
Eliminar los datos inútiles.
Descomponer el problema en otros más pequeños.

3. EJECUTAR EL PLAN (Resolver).
Ejecutar en detalle cada operación.
Simplificar antes de calcular.
Realizar un dibujo o diagrama.

4. ANALIZAR LA SOLUCIÓN (Revisar).
Dar una respuesta completa
Hallar el mismo resultado de otra manera.
Verificar por apreciación que la respuesta es adecuada.

Método Algorítmico


Consiste en aplicar adecuadamente una serie de pasos detallados que aseguran una solución correcta. Por lo general, cada algoritmo es específico de un dominio del conocimiento. La programación de computadores se apoya en este método.
Numerosos autores de libros sobre programación, plantean cuatro fases para elaborar un procedimiento que realice una tarea específica. Estas fases concuerdan con las operaciones mentales descritas por Polya para resolver problemas:

1. Analizar el problema (Entender el problema)
2. Diseñar un algoritmo (Trazar un plan)
3. Traducir el algoritmo a un lenguaje de programación (Ejecutar el plan)
4. Depurar el programa (Revisar)

Como se puede apreciar, hay una similitud entre las metodologías propuestas para solucionar problemas matemáticos (Clements & Meredith, 1992; Díaz, 1993; Melo, 2001; NAP, 2004) y las cuatro fases para solucionar problemas específicos de áreas diversas, mediante la programación de computadores.

1. Analizar el problema (entenderlo)

Los programas de computador tienen como finalidad resolver problemas específicos y el primer paso consiste en definir con precisión el problema hasta lograr la mejor comprensión posible. Una forma de realizar esta actividad se basa en formular claramente el problema, especificar los resultados que se desean obtener, identificar la información disponible (datos), determinar las restricciones y definir los procesos necesarios para convertir los datos disponibles (materia prima) en la información requerida (resultados).


Estas etapas coinciden parcialmente con los elementos generales que, según Schunk (1997), están presentes en todos los problemas:

1. Especificar claramente los resultados que se desean obtener (meta y submetas)
2. Identificar la información disponible (estado inicial)
3. Definir los procesos que llevan desde los datos disponibles hasta el resultado deseado (operaciones)

Para establecer un modelo que los estudiantes puedan utilizar en la fase de análisis del problema, debemos agregar dos temas a los elementos expuestos por Schunk (1997): formular el problema y determinar las restricciones.

2. Diseñar el algoritmo (trazar un plan)

Podemos resumir que únicamente hasta cuando se ha realizado un análisis a fondo del problema (utilizando alguna metodología), se puede proceder a elaborar el algoritmo (diagrama de flujo). Este consiste en la representación gráfica, mediante símbolos geométricos, de la secuencia lógica de las instrucciones (plan) que posteriormente serán traducidas a un lenguaje de programación, como Logo, para ejecutarlas y probarlas en un computador.

3. Traducir el algoritmo (ejecutar el plan)

Una vez que el algoritmo está diseñado y representado gráficamente se pasa a la etapa de traducción a un lenguaje de programación determinado (en nuestro caso será scratch ó squeak). 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 programación, mayor posibilidad de llegar rápidamente a una solución satisfactoria. A esta fase de traducción se le conoce comúnmente como codificación.

4. Depurar el programa (revisar)

Después de traducir el algoritmo en un lenguaje de programación como Scratch, el programa resultante debe ser probado y validados los resultados. A este proceso se le conoce como depuración. Depurar programas contribuye a mejorar la capacidad en los estudiantes para resolver problemas; la depuración basada en la retroalimentación 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 más complejo. La depuración, afinamiento y
documentación de un programa hacen parte fundamental del ciclo de programación y desde el punto de vista educativo estimula en los estudiantes la curiosidad, la perspectiva, la comunicación y promueve valores como responsabilidad, fortaleza, laboriosidad, paciencia y perseverancia. La programación facilita un diálogo interior en el cual la retroalimentación constante y el éxito gradual empujan a los alumnos a ir más allá de sus expectativas (Stager, 2003).

Otras dos actividades relacionadas con esta etapa son la afinación y la documentación. La primera consiste en realizar retoques para lograr una mejor apariencia del programa (en pantalla o en los resultados impresos) o para ofrecer funcionalidades más allá de los resultados esperados (especificados en la fase de análisis del problema). La segunda tiene un carácter eminentemente comunicativo, con la documentación de un programa se pone a prueba la capacidad del estudiante para informar a otras personas cómo funciona su programa y lo que significa cada elemento utilizado.