jueves, 25 de marzo de 2010

algoritmo para pasar canibales y misioneros de una orilla a otra

inicio
1 se suben dos canibales
2 un canibal rema
3 se baja un canibal
4 se devuelve un canibal
5 se sube otro canibal
6 se baja otro canibal
7 rema un canibal
8 se devuelve
9 se baja el canibal
10 se suben dos misioneros
11 rema un misionero
12 se bajan dos misioneros
13 rema el misionero
14 deja el canibal
15 se sube otro misionero
16 rema un misionero
17 se devuelve
18 se bajan los dos misioneros
19 se sube un canibal
20 rema y se devuelve
21 se sube otro canibal
22 rema un canibal
23 se bajan los dos canibales
24 se termina el juego


fin

jueves, 11 de marzo de 2010

Logo ofrece dos tipos de variables: Locales y Globales.
Las primeras retienen su valor el tiempo que dure la
ejecución del procedimiento en el cual se utiliza. Las
variables Locales se pueden crear con las primitivas
asigna y local o en la línea del título de un
procedimiento.
En Logo se utiliza el comando da para asignar un valor a
una variable o constante. La sintaxis es:
da “nombreVariable valor
que es equivalente a la forma nombreVariable=Valor
que se utiliza en la mayoría de los lenguajes de
programación.
Para utilizar el valor almacenado en una variable o
constante se debe anteponer dos puntos (:) al nombre;
en
:nombreVariable
los dos puntos significan “no quiero la palabra
nombreVariable; quiero el valor almacenado en
nombreVariable


Una Expresión está compuesta por valores, funciones,
primitivas, constantes y/o variables, o por una
combinación de los anteriores mediante operadores.
Los Diagramas de Flujo son una de las técnicas más
utilizadas para representar gráficamente la secuencia de
instrucciones de un Algoritmo. Estas instrucciones están
compuestas por operaciones, decisiones lógicas y ciclos
repetitivos, entre otros. La solución de un problema
puede contener varios conjuntos de instrucciones
(procedimientos o métodos) que tienen como finalidad
ejecutar cada uno de los procesos necesarios para
llegar a la solución de un problema a partir de los datos
disponibles (estado inicial).

El seudocódigo está compuesto por proposiciones
informales en español que permiten expresar
detalladamente las instrucciones que llevan desde un
estado inicial (problema) hasta un resultados deseado
(solución). Por lo regular, los algoritmos se escriben por
refinamiento: se escribe una primera versión que luego
se descompone en varios subproblemas (el número
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 español como las del ejemplo anterior se
puedan codificar en el lenguaje seleccionado para hacer
la programación (en el caso de esta guía será Logo).

Para poder utilizar algoritmos con diferentes conjuntos
de datos iniciales, se debe establecer una
independencia clara entre los datos iniciales de un
problema y la estructura de su solución. Esto se logra
mediante la utilización de Variables (cantidades que se
suelen denotar con letras –identificadores- y que pueden
tomar cualquier valor de un intervalo de valores
posibles).
En programación, las Variables son espacios de trabajo
(contenedores) reservados para guardar datos (valores).
El valor de una Variable puede cambiar en algún paso
del Algoritmo o permanecer invariable; por lo tanto, el
valor que contiene una variable es el del último dato
asignado a esta. En el Algoritmo de la Ilustración 2-4,
"área" es un ejemplo de Variable; en el paso 5 se
guardó en ella el resultado de multiplicar "base" por
"altura" y en el paso 6 se utilizó nuevamente para
guardar el valor de dividir su propio contenido ("área")
entre la Constante "div".
La rama del saber que mayor utilización ha hecho del
enfoque algorítmico es las matemáticas. Durante miles
de años el ser humano se ha esforzado por abstraer la
estructura de la solución de problemas con el fin de
determinar claramente cuál es el camino seguro, preciso
y rápido que lleva a esas soluciones. Son abundantes
los ejemplos: máximo común divisor, teorema de
Pitágoras, áreas de figuras geométricas, división, suma
de números fraccionarios, etc. Todos estos algoritmos
matemáticos independizan los datos iniciales del
problema de la estructura de su solución, lo que permite
su aplicación con diferentes conjuntos de datos iniciales
(variables).


En el ámbito de la computación, los Algoritmos son una
herramienta que permite describir claramente un
conjunto finito de instrucciones, ordenadas
secuencialmente y libres de ambigüedad, 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 programación que
el computador entiende (Logo, Java, Pascal, etc).


En términos generales, un Algoritmo debe ser:
• Realizable: El proceso algorítmico debe terminar
después 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 ejecución se encuentra
con un obstáculo insuperable sin arrojar un
resultado.
• Comprensible: Debe ser claro lo que hace, de
forma que quien ejecute los pasos (ser humano o
máquina) sepa qué, cómo y cuándo hacerlo. Debe
existir un procedimiento que determine el proceso
de ejecución.
• Preciso: El orden de ejecución 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 precisión
implica determinismo.


Un aspecto muy importante sobre el cual los estudiantes
deben reflexionar es la ambigüedad del lenguaje natural
que utilizan para comunicarse diariamente con sus
semejantes. La informalidad o formalidad en la
comunicación 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 comunicación informal y comunicación
formal, cuya principal característica es la precisión. Los
algoritmos no admiten ningún tipo de ambigüedad ya
que los computadores no podrían ejecutarlos.


Los Algoritmos se puede expresar de muchas maneras,
pero en esta guía se tratarán solo dos formas:
Seudocódigo y Diagrama de Flujo. En Seudocódigo la
secuencia de instrucciones se representa por medio de
frases o proposiciones, mientras que en un Diagrama
de Flujo se representa por medio de gráficos.


Utilizar Diagramas de Flujo para representar un
algoritmo tiene claras ventajas, especialmente cuando
son construidos por estudiantes de básica y media.
Numerosas investigaciones han mostrado que el
Aprendizaje Visual es uno de los mejores métodos para
enseñar habilidades del pensamiento. Las técnicas que
utilizan formas graficas para representar ideas e
información ayudan a los estudiantes a clarificar su
pensamiento, y a procesar, organizar y priorizar nueva
información. Los diagramas visuales revelan patrones,
interrelaciones e interdependencias además de
estimular el pensamiento creativo.

viernes, 5 de marzo de 2010

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 regresar
a 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

El anterior es un problema típico en clase de
matemáticas. Es muy importante que los estudiantes
reflexionen sobre las actividades que realizan para
solucionarlo (metacognición) y las agrupen de acuerdo a
las etapas que contenga la estrategia de solución

Establecer un modelo para solucionar problemas es un
paso fundamental pero no suficiente. Según Clements &
Meredith (1992) y Zemelman, Daniels & Hyde (1998) y
otros, los docentes deben adoptar una serie de buenas
prácticas 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 solución.
Presentar diversas estrategias de solución de
problemas.
Asignar problemas que tengan aplicación en la vida
diaria.
Ofrecer experiencias que estimulen la curiosidad de
los estudiantes y construyan confianza en la
investigación, la solución de problemas y la
comunicación.
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 cómo los conceptos y
habilidades utilizados podrían aplicarse en otros
contextos.
Promover, de manera creciente, la abstracción y la
generalización mediante la reflexión y la
experimentación.
Fomentar la utilización de representaciones visuales
empleada.

El anterior es un problema típico en clase de
matemáticas. Es muy importante que los estudiantes
reflexionen sobre las actividades que realizan para
solucionarlo (metacognición) y las agrupen de acuerdo a
las etapas que contenga la estrategia de solución
empleada.

que favorezcan la comprensión de conceptos
(diagramas de flujo, mapas conceptuales, diagramas
de Venn, etc).
Dar retroalimentación personalizada en
consideración al esfuerzo hecho por los estudiantes
para solucionar problemas.
Verificar que una cantidad importante de la
instrucción ocurra en grupos pequeños o en
situaciones de uno a uno.
Ventilar los errores y malentendidos más comunes.
Promover la interacción tanto estudiante-docente,
como estudiante-estudiante. Los niños son los
mejores maestros de otros niños 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.

jueves, 4 de marzo de 2010

la programación de computadores constituye una buena alternativa, siempre y cuando se la enfoque al logro de esta
habilidad y no a la formación de programadores. Es importante insistir en esta orientación debido a que las metodologías
utilizadas en educación básica

la programación de computadores posibilita no solo activar una amplia variedad de
estilos de aprendizaje sino desarrollar el pensamiento algorítmico. Adicionalmente, compromete a los estudiantes en
la consideración de varios aspectos importantes para la solución de problemas decidir sobre la naturaleza del problema,
seleccionar una representación que ayude a resolverlo y, monitorear sus propios pensamientos metacognición y
estrategias de solución.

En la primera unidad se introduce un enfoque para educación básica orientado hacia la solución de problemas con ayuda
del computador. En ella, se plantean las cuatro fases que componen el ciclo de programación que a su vez concuerdan
con las operaciones mentales descritas por Polya