SlideShare a Scribd company logo
1 of 6
Download to read offline
INTRODUCCION A LOS MICROMUNDOS PARA DESOCUPADOS.
Enrique Araújoviedo.



Parte I:

 Muestra Sinprimero [ LoBueno LoMalo LoFeo ]

Lo primero que voy a decir, es que “Micromundos Pro” es una herramienta horrosa. Podrá
estar basada en Logo (que sí es un lenguaje poderoso y serio), pero la herramienta tiene unas
carencias impresionantes. Tal vez ese haya sido el objetivo de los programadores. Por
ejemplo, una vez que una figura se ha ubicado sobre el fondo y que no se ha asignado a alguna
tortuga inmediatamente se funde con el fondo impidiendo cualquier modificación, es ni
siquiera se dispone de un historial de acciones para deshacer; quiere esta falencia decir que
no se puede trabajar con capas. Esta es una deficiencia impresionante más cuando se trata de
trabajar con muchos actores (tortugas). Cada tortuga de alguna manera trabaja en una capa
propia ya que éstas se pueden intercalar; pero qué difícil es determinar en qué profundidad se
encuentra una tortuga respecto de otra cuando se dispone de muchas; no existe un comando
que permita establecer la secuencia de profundidad y menos aún uno que permita que dos o
más se encuentren sobre un mismo plano para efectuar por ejemplo colisiones o encuentros.
Las máscaras de las tortugas (o disfraces) sobredimensionan visualmente el objeto pero no así
extienden el objeto; por ejemplo supongamos que a una tortuga T1 le colocamos una máscara
de 179x60 px y a otra una máscara de 60x20 px, es de esperarse que si están lo
suficientemente cerca su perímetro de colisión o encuentro sea bastante amplio, por el
contrario las dos máscaras pueden superponerse (traslaparse) sin siquiera declararse el
contacto. Más específicamente, supóngase que la máscara para T1 corresponde a una imagen
de un bus y la máscara para T2 corresponde a una imagen de un automóvil y se trata de
simular un cruce de una vía. Perfectamente se traslapan las máscaras sin declararse una
colisión, lo que hace irreal el micromundo simulado.

Existen objetos como las tortugas cuyas propiedades están ocultas para el programador; las
cajas de texto no son evidentes; no hay una manera específica desde la caja de propiedades
(inspector de propiedades) de declarar características tales como las barras de
desplazamiento, el tipo y color de la fuente. Si se ubica una tortuga T1 en un lugar del
escenario no hay manera a través de algún inspector de propiedades de determinar sus
coordenadas; puede hacerse a través de la ventana de código (centro de mandos) ubicando
previamente el cursor sobre el objeto y realizando un click (lo que puede activar la tortuga y
desplazarla del lugar deseado), escribiendo “muestra fpos”. Nos dará una lista de las
coordenadas actuales de dicho objeto; ello debería poderse hacer desde un click derecho. No
existe, por otra parte, una diferencia sustantiva entre las ventanas de instrucción de los
objetos, haciendo que su comportamiento instructivo sea el mismo ya se trate de una tortuga,
un botón o una caja de texto. Los botones son la cosa más engorrosa: el nombre asociado (el
que muestra) es el mismo del procedimiento asociado, lo que puede conducir a equívocos
entre la identidad del objeto y el manejador del procedimiento ( el mensaje del handler). No
es posible modificar de ninguna manera una ventana de mensajes que se activan mediante
primitivas tales como “pregunta” o “respuesta”. No se pueden posicionar en un determinado
lugar con un tamaño específico y no se pueden crear ventanas emergentes con botones de
control en una barra superior o botones cancelar y aceptar manejados por el programador.



Si de activar las tortugas se trata no existe una manera fácil de establecer una lista de
activación; se puede mediante programación, pero el código no es fácil de digerir:

                           para mezclando :lista :resultado
                              si (cuenta :resultado) = cuenta :lista
                           [reporta :resultado]
                              asigna [c1 item (1 + azar cuenta
                           :lista) :lista]
                              si miembro? :c1 :resultado
                                [re mezclando :lista :resultado]
                              re mezclando :lista ppr :c1 :resultado
                           fin


El procedimiento anterior devuelve una lista al azar para activar (encender) las tortugas.

La manipulación de imágenes es pobre; el editor gráfico (que funciona más como un editor de
íconos) es demasiado básico. Ni siquiera maneja transparencias para el diseño de las máscaras
que se utilizarán para las tortugas. Si se trata de importar un “Gif” animado para incorporarlo
al panel de gráficos, cada fotograma se incorpora por separado, perdiéndose precisamente la
animación que debe volverse a recrear mediante máscaras invocadas sobre una misma tortuga
mediante una lista de “ffig´s”. Piénsese en un Gif animado de más de 10 fotogramas; la cosa se
vuelve insoportable. Debería conservarse la estructura del Gif animado en la estructura de las
máscaras para incorporar una única máscara y no una secuencia; de alguna manera, la
secuencia aunque no ralentiza severamente la ejecución genera líneas de código largas e
improductivas, quitándole elegancia a la programación.

Ya que hablamos de elegancia, que horrible la traducción al español de la versión en inglés; la
verdad es preferible trabajar con la versión inglesa. La versión en español tiene poca elegancia
y estructura; se aleja enormemente de los otros “lenguajes Logo” y en lugar mejorar empeora:
no es natural escribir “atrás” para retroceder. No es eficiente escribir “atrás 10 pasos” (at 10),
de hecho pareciera que la orientación no se conservara sino que se pide efectuar un giro de
180 grados y luego avanzar los 10 pasos. La expresión “retrocede 10 pasos” indica con claridad
que la orientación actual se conserva. Sin embargo debemos reconocer que ese fenómeno de
la traducción no es sólo del Logo de Micromundos, otras versiones adolecen del mismo mal.

Algo que incomoda es la aparición de la coma para indicar que un actor va a realizar una
secuencia de primitivas. Qué ocurre si se quiere que dos actores (tortugas) realicen secuencias
distintas? Una vez terminada la lista de la primera secuencia, cómo indicarle al logo del
micromundos que el nuevo objeto es un actor? Incomoda antetodo porque resta la
característica fundamental del Logo, las listas. No quiere decir que no se entienda que la coma
no puede ser un elemento de una lista sino que no cumple tal, es simplemente un separador.
Eso es lo que incomoda: rompe con la elegancia de escribir listas bien elaboradas (claro que
este aparte es más un pataleo de niño mimado que otra cosa).
Hay muchas, pero muchas cosas que no gustan de la herramienta “Micromundos Pro”; pero
veamos las buenas, porque de igual manera tiene muchas y muy buenas.

Parte II:
para ver
asigna [ variable menosúltimo menosúltimo [ LoBueno LoMalo LoFeo ] ]
muestra : variable
fin

Las cosas buenas no deberían ser tan complicadas como el anterior procedimiento. Y en eso
hay que reconocerle a Logo el valor añadido que le otorga a la herramienta “micromundos
pro”. Realmente no importa que esté mal traducido o que las palabras no sean las más
bonitas, lo que se puede hacer con Logo es sencillamente excepcional. Todo depende de uno,
del programador.

Una parte desconocida de Logo es precisamente el potencial de que tienen las listas, no sólo
como herramientas de programación sino como objetos de aprendizaje y objetos de desarrollo
de pensamiento complejo.

En esta sección vamos a ocuparnos un poco de las listas y vamos a esforzarnos por mostrar la
belleza que estas le proveen a Logo y el potencial lógico de programación.

Puesto que esta introducción está dirigida para profesores no nos ocuparemos de los aspectos
de la enseñabilidad (el cómo enseñar a pensar con listas a los estudiantes); eso lo haremos
más adelante.

Una lista es un objeto que tiene cabeza y cola (algo así como un primero y un último
elemento); pero una lista puede contener un solo elemento y en ese caso el único elemento es
cabeza y cola a la vez (imagínese una fila en un supermercado; imagínese que sólo hay un
cliente. Ese cliente, el único en la fila, es el primero y el último a la vez). Una lista también
puede estar vacía, es decir que no tiene ningún elemento. Este por supuesto es el caso trivial,
pero necesario (imagínese otra vez la fila en el supermercado; suponga que hay un solo cajero
atendiendo, en algún momento el cajero se desocupará porque ha atendido a todos los de la
fila y se queda a la espera que aparezca un cliente; durante ese tiempo, la fila está vacía).

Repasemos: existe una lista vacía; existe una lista con un único miembro que es cabeza y cola y
de ahí en adelante es claro que una lista con más de dos miembros tiene un primer elemento
(la cabeza) y un último elemento (la cola). Ahora como de lo que se trata es de listas de datos
y sabemos que los tipos de datos son numéricos, alfabéticos y alfanuméricos parece obvio
pensar que los elementos de una lista son estos objetos; pero no, hay todavía más: los
miembros de una lista pueden ser también listas. Para concretar, diremos que los elementos
de una lista pueden ser “palabras” (objetos que no son listas) y “listas”. Así pues una lista es
una colección ordenada (y esto es muy importante ya que las diferencia de los conjuntos) de
palabras y/o listas. Las “palabras” pueden ser un dato numérico, un dato alfanumérico, un
dato alfabético e incluso una operación o un conector (lógico). Con las listas podemos
construir estructuras de datos que incluyen otras palabras y listas.
Las listas se representan mediante corchetes cuadrados y sus elementos están contenidos
dentro de éstos, así: [ 1 2 3 ] es una lista con tres miembros, a saber los datos numéricos
1, 2 y 3. En ésta lista la cabeza es el dato numérico 1 (uno) y la cola el dato numérico 3 (tres).
Ahora si consideramos la lista [ 1 [ 2 3] ], se observa que es una lista que tiene una
“palabra” (el dato numérico 1) y una “lista” (la lista que contiene los datos numéricos 2 y 3).
Se tiene pues que la cabeza de la lista es el dato 1 y que la cola es la lista [2 3]. En ésta lista la
cabeza es el dato 2 y la cola es el dato 3. Así que podemos decir que “la cabeza de la cola (la
lista [2 3]) es 2” y que “la cola de la cola es 3”. En éste simple ejemplo se puede observar
rápidamente la complejidad que entrañan las listas. Esto permite establecer que las listas [ 1
[ 2 3] ] y [ 1 [ 3 2] ] son distintas ya que “la cabeza de la cola” de la primera lista
es distinta de “la cabeza de la cola” de la segunda lista y, de modo semejante “la cola de la
cola” de la primera lista s distinta de la “cola de la cola” de la segunda lista.

Esto siempre es así, pues si tiene la lista de listas vacías [ [ ] [ [ ] [ ] ] ] y se
compara con la lista de listas vacías [ [ [ ] [ ] ] [ ] ] se observa que son distintas
tanto las “cabezas” como las “colas”.

Pero obviamente las listas son más claras si tienen objetos que nos sean familiares: [1 [1
2][7 [a b]]]

Una pregunta inmediata es ¿cuántos elementos posee una lista? Aunque la pregunta parece
sencilla de responder, entraña cierta dificultad. Veamos. La lista anterior contiene tres
elementos: “una palabra, el número 1”; la lista [1 2] y la lista [7 [a b]. El segundo y
tercer elemento son también listas.

Otra pregunta básica es la diferencia entre una palabra y una lista; parece obvia. Gracias
precisamente a la posibilidad de contar los elementos de una lista podemos establecer una
denominación para cada elemento: a cada elemento de una lista lo llamaremos un ítem y está
definido por su posición en la lista; así el ítem 4 corresponderá al elemento que se encuentra
en la cuarta posición de la lista que como se dijo puede ser una lista o un caracter. En una
palabra sus elementos son exclusivamente caracteres. Esta es la primera diferencia como
objetos generales. Para Logo las diferencias pueden ser no tan evidentes para el usuario, por
ejemplo Logo no reconoce de la misma manera una lista vacía y una palabra vacía, aunque
devuelva lo mismo (un espacio). Se observa mejor esta situación si consideramos una lista que
contenga una sola palabra y una sola palabra:

                  muestra "palabra                  muestra [palabra]
                  palabra                           palabra




Aunque el resultado sea el mismo, son procesados como dos diferentes tipos de datos.

Esto hace que las operaciones que actúen sobre una lista actúen sobre los ítems de modo
distinto a como lo harían operaciones similares con las palabras.

Es claro que las operaciones necesarias en una lista deben identificar los ítems, así que las
primeras operaciones deben identificar el primero y último elemento sin por ello dejar de
importar sus características. La operación en sí actúa sobre la posición y luego sobre el
contenido ubicado en dicha posición; pero cualquier operación de este tipo debe disponer de
una información previa: la cantidad de miembros de una lista; pues ¿cómo saber cuál es el
último si no se dispone de ese dato?

Una estructura operativa de posicionamiento sobre listas en general, responde a una regla de
datos como: (cantidad de miembros: n; identificar primer elemento: ubicar puntero n-1
posiciones anteriores), si se trata del primer elemento. Si se tratara de ubicar el ítem k-ésimo la
estructura sería: (cantidad de miembros: n; establecer si k<n; en caso afirmativo ubicar puntero
(n-k) posiciones anteriores contadas desde el último elemento, en caso negativo indicar
imposibilidad de actuar; si el caso es positivo, identificar k-ésimo miembro). Pareciera
engorrosa la estructura ya que los humanos no pensamos así, ya que podemos pensar con
datos incompletos (información borrosa) o asumir progresiones ascendentes sin importar la
existencia de un último elemento. En las estructuras de datos orientadas a máquinas (tipo Von
Newmann) ello podría implicar poner a la máquina en un loop infinito o en una situación en la
que no puede parar. Pero bueno, los compiladores nos resuelven estos problemas para no
tener que enfrentarnos directamente a ellos y Logo dispone de dos operaciones que nos
ayudan en esta actividad: la primera sirve para contar los elementos de una lista y la segunda
para ubicarse en la posición de un ítem en particular. Otra cosa es extraer el dato allí
contenido. Para ello se debe disponer de una (o unas operaciones de extracción) cuya
estructura de datos es semejante a como sigue: ((cantidad de miembros: n; establecer si k<n;
en caso afirmativo ubicar puntero (n-k) posiciones anteriores contadas desde el último
elemento, en caso negativo indicar imposibilidad de actuar); (si el caso es positivo, identificar k-
ésimo miembro: establecer si el elemento es nulo –vacío-, si es una palabra o una lista;
establecer la cantidad de memoria necesaria para el elemento y definir una variable temporal
que contendrá una copia del elemento; copiar el elemento en la memoria temporal); si existe la
petición mostrar contenido de la memoria temporal –o sea el elemento-).

Estudiar la estructura interna de las listas y cómo actúan las operaciones sobre ellas es
necesario si se quiere ir más allá de la simple manipulación de las listas; la programación
requiere en ocasiones pensar como razona el diseñador de los compiladores (en éste caso el
intérprete, ya que Logo es un lenguaje interpretado y no compilado –que es una verdadera
lástima no disponer de un compilador Logo-).

Si se disponen de las operaciones de extracción deben disponerse también de las operaciones
de inserción (operaciones inversas) [obsérvese la semejanza con el manejo de las bases de
datos; pero cuidado, las listas no son bases de datos aunque podemos usar listas para elaborar
bases de datos –esto lo trataremos en un aparte especial-].

Resumiendo el manejo de las listas implica entender que se tiene a) un apuntador hacia el
primer elemento de la lista y b) un apuntador hacia el resto de la lista. En particular Logo
cuenta con un apuntador hacia el primer elemento de la lista: FIRST (en micromundos pro:
primero), con un apuntador hacia el último elemento de la lista: LAST (en micromundos pro:
último). La lista [ A B C D ] se almacena como una sucesión de apuntadores. En el
primer nodo hay un apuntador hacia el elemento A y un apuntador hacia otro nodo, en éste
hay un apuntador hacia B y otro hacia el nodo siguiente; el último nodo apuntará hacia el
elemento D y hacia ninguna parte –un nodo nulo-. En el siguiente árbol se muestra el
almacenamiento de la lista:




                             Figura 1. Almacenamiento de la lista [ A B C D ]

Obsérvese ahora el manejo de los apuntadores en la lista: [[A B] [C D]]:




                           Figura 2. Almacenamiento de la lista [ [A B] [C D] ]

Pregúntese ahora cómo serán los árboles de las listas: [A [B C D]],               [A [B] [C D]],
[[A B C] [D]], [[A] [B] [C D]].


Las primitivas Logo correspondientes a las operaciones mencionadas son:


  Primitiva                  definición                               ejemplo              reporta
primero      Reporta el primer elemento de una lista.        primero [A [B] [C D]]     A

último       Reporta el último elemento de una lista         último [A [B] [C D]]     [C D]

menosprimero Reporta la lista sin el primer elemento.        menosprimero [[A B C]    [[D]]
                                                             [D]],
menosúltimo       Reporta la lista sin el último elemento.   menosúltimo [[A B C]     [[A B C]]
                                                             [D]]
ítem              Reporta el elemento especificado de una    ítem 2 [A [B] [C D]]     [B]
                  lista.


(continuará ….)

More Related Content

More from SED - Fundación Galileo para el Desarrollo del Pensamiento, la Ciencia y la Tecnología

More from SED - Fundación Galileo para el Desarrollo del Pensamiento, la Ciencia y la Tecnología (20)

Modelo pedagógico orientado al diseño
Modelo pedagógico orientado al diseñoModelo pedagógico orientado al diseño
Modelo pedagógico orientado al diseño
 
Glifos (ingenia)
Glifos (ingenia)Glifos (ingenia)
Glifos (ingenia)
 
Micromundos Para Desocupados Parte Ii
Micromundos Para Desocupados Parte IiMicromundos Para Desocupados Parte Ii
Micromundos Para Desocupados Parte Ii
 
Micromundos Para Desocupados Parte I
Micromundos Para Desocupados Parte IMicromundos Para Desocupados Parte I
Micromundos Para Desocupados Parte I
 
De La Idea Al Proyecto(Parte4)
De La Idea Al Proyecto(Parte4)De La Idea Al Proyecto(Parte4)
De La Idea Al Proyecto(Parte4)
 
Comprender Y Aprender2
Comprender Y Aprender2Comprender Y Aprender2
Comprender Y Aprender2
 
De La Idea Al Proyecto(Parte1)
De La Idea Al Proyecto(Parte1)De La Idea Al Proyecto(Parte1)
De La Idea Al Proyecto(Parte1)
 
Pres Logo 01
Pres Logo 01Pres Logo 01
Pres Logo 01
 
Cerebro,Ojo,Mano
Cerebro,Ojo,ManoCerebro,Ojo,Mano
Cerebro,Ojo,Mano
 
Juego De Polinomios
Juego De PolinomiosJuego De Polinomios
Juego De Polinomios
 
Teoria De Las Hileras
Teoria De Las HilerasTeoria De Las Hileras
Teoria De Las Hileras
 
Juego De Polinomios
Juego De PolinomiosJuego De Polinomios
Juego De Polinomios
 
Hileras De Dominos (Ejercicios Propuestos)
Hileras De Dominos (Ejercicios Propuestos)Hileras De Dominos (Ejercicios Propuestos)
Hileras De Dominos (Ejercicios Propuestos)
 
Aulas Inteligentes -Cuento-
Aulas Inteligentes -Cuento-Aulas Inteligentes -Cuento-
Aulas Inteligentes -Cuento-
 
Aproximación a la Didactica del Logo(Parte4)
Aproximación a la Didactica del Logo(Parte4)Aproximación a la Didactica del Logo(Parte4)
Aproximación a la Didactica del Logo(Parte4)
 
Aproximación a la Didactica del Logo(Parte2)
Aproximación a la Didactica del Logo(Parte2)Aproximación a la Didactica del Logo(Parte2)
Aproximación a la Didactica del Logo(Parte2)
 
Deficiencias de los estudiantes en su aprendizaje de la Geometría
Deficiencias de los estudiantes en su aprendizaje de la GeometríaDeficiencias de los estudiantes en su aprendizaje de la Geometría
Deficiencias de los estudiantes en su aprendizaje de la Geometría
 
La Escuela es una organización
La Escuela es una organizaciónLa Escuela es una organización
La Escuela es una organización
 
Logo una mirada didáctica (Parte1)
Logo una mirada didáctica (Parte1)Logo una mirada didáctica (Parte1)
Logo una mirada didáctica (Parte1)
 
Logo una mirada didáctica (Parte2)
Logo una mirada didáctica (Parte2)Logo una mirada didáctica (Parte2)
Logo una mirada didáctica (Parte2)
 

Recently uploaded

PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptAlberto Rubio
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 

Recently uploaded (20)

PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 

Introducción a los Micromundos para desocupados

  • 1. INTRODUCCION A LOS MICROMUNDOS PARA DESOCUPADOS. Enrique Araújoviedo. Parte I: Muestra Sinprimero [ LoBueno LoMalo LoFeo ] Lo primero que voy a decir, es que “Micromundos Pro” es una herramienta horrosa. Podrá estar basada en Logo (que sí es un lenguaje poderoso y serio), pero la herramienta tiene unas carencias impresionantes. Tal vez ese haya sido el objetivo de los programadores. Por ejemplo, una vez que una figura se ha ubicado sobre el fondo y que no se ha asignado a alguna tortuga inmediatamente se funde con el fondo impidiendo cualquier modificación, es ni siquiera se dispone de un historial de acciones para deshacer; quiere esta falencia decir que no se puede trabajar con capas. Esta es una deficiencia impresionante más cuando se trata de trabajar con muchos actores (tortugas). Cada tortuga de alguna manera trabaja en una capa propia ya que éstas se pueden intercalar; pero qué difícil es determinar en qué profundidad se encuentra una tortuga respecto de otra cuando se dispone de muchas; no existe un comando que permita establecer la secuencia de profundidad y menos aún uno que permita que dos o más se encuentren sobre un mismo plano para efectuar por ejemplo colisiones o encuentros. Las máscaras de las tortugas (o disfraces) sobredimensionan visualmente el objeto pero no así extienden el objeto; por ejemplo supongamos que a una tortuga T1 le colocamos una máscara de 179x60 px y a otra una máscara de 60x20 px, es de esperarse que si están lo suficientemente cerca su perímetro de colisión o encuentro sea bastante amplio, por el contrario las dos máscaras pueden superponerse (traslaparse) sin siquiera declararse el contacto. Más específicamente, supóngase que la máscara para T1 corresponde a una imagen de un bus y la máscara para T2 corresponde a una imagen de un automóvil y se trata de simular un cruce de una vía. Perfectamente se traslapan las máscaras sin declararse una colisión, lo que hace irreal el micromundo simulado. Existen objetos como las tortugas cuyas propiedades están ocultas para el programador; las cajas de texto no son evidentes; no hay una manera específica desde la caja de propiedades (inspector de propiedades) de declarar características tales como las barras de desplazamiento, el tipo y color de la fuente. Si se ubica una tortuga T1 en un lugar del escenario no hay manera a través de algún inspector de propiedades de determinar sus coordenadas; puede hacerse a través de la ventana de código (centro de mandos) ubicando previamente el cursor sobre el objeto y realizando un click (lo que puede activar la tortuga y desplazarla del lugar deseado), escribiendo “muestra fpos”. Nos dará una lista de las coordenadas actuales de dicho objeto; ello debería poderse hacer desde un click derecho. No existe, por otra parte, una diferencia sustantiva entre las ventanas de instrucción de los objetos, haciendo que su comportamiento instructivo sea el mismo ya se trate de una tortuga, un botón o una caja de texto. Los botones son la cosa más engorrosa: el nombre asociado (el que muestra) es el mismo del procedimiento asociado, lo que puede conducir a equívocos entre la identidad del objeto y el manejador del procedimiento ( el mensaje del handler). No es posible modificar de ninguna manera una ventana de mensajes que se activan mediante primitivas tales como “pregunta” o “respuesta”. No se pueden posicionar en un determinado
  • 2. lugar con un tamaño específico y no se pueden crear ventanas emergentes con botones de control en una barra superior o botones cancelar y aceptar manejados por el programador. Si de activar las tortugas se trata no existe una manera fácil de establecer una lista de activación; se puede mediante programación, pero el código no es fácil de digerir: para mezclando :lista :resultado si (cuenta :resultado) = cuenta :lista [reporta :resultado] asigna [c1 item (1 + azar cuenta :lista) :lista] si miembro? :c1 :resultado [re mezclando :lista :resultado] re mezclando :lista ppr :c1 :resultado fin El procedimiento anterior devuelve una lista al azar para activar (encender) las tortugas. La manipulación de imágenes es pobre; el editor gráfico (que funciona más como un editor de íconos) es demasiado básico. Ni siquiera maneja transparencias para el diseño de las máscaras que se utilizarán para las tortugas. Si se trata de importar un “Gif” animado para incorporarlo al panel de gráficos, cada fotograma se incorpora por separado, perdiéndose precisamente la animación que debe volverse a recrear mediante máscaras invocadas sobre una misma tortuga mediante una lista de “ffig´s”. Piénsese en un Gif animado de más de 10 fotogramas; la cosa se vuelve insoportable. Debería conservarse la estructura del Gif animado en la estructura de las máscaras para incorporar una única máscara y no una secuencia; de alguna manera, la secuencia aunque no ralentiza severamente la ejecución genera líneas de código largas e improductivas, quitándole elegancia a la programación. Ya que hablamos de elegancia, que horrible la traducción al español de la versión en inglés; la verdad es preferible trabajar con la versión inglesa. La versión en español tiene poca elegancia y estructura; se aleja enormemente de los otros “lenguajes Logo” y en lugar mejorar empeora: no es natural escribir “atrás” para retroceder. No es eficiente escribir “atrás 10 pasos” (at 10), de hecho pareciera que la orientación no se conservara sino que se pide efectuar un giro de 180 grados y luego avanzar los 10 pasos. La expresión “retrocede 10 pasos” indica con claridad que la orientación actual se conserva. Sin embargo debemos reconocer que ese fenómeno de la traducción no es sólo del Logo de Micromundos, otras versiones adolecen del mismo mal. Algo que incomoda es la aparición de la coma para indicar que un actor va a realizar una secuencia de primitivas. Qué ocurre si se quiere que dos actores (tortugas) realicen secuencias distintas? Una vez terminada la lista de la primera secuencia, cómo indicarle al logo del micromundos que el nuevo objeto es un actor? Incomoda antetodo porque resta la característica fundamental del Logo, las listas. No quiere decir que no se entienda que la coma no puede ser un elemento de una lista sino que no cumple tal, es simplemente un separador. Eso es lo que incomoda: rompe con la elegancia de escribir listas bien elaboradas (claro que este aparte es más un pataleo de niño mimado que otra cosa).
  • 3. Hay muchas, pero muchas cosas que no gustan de la herramienta “Micromundos Pro”; pero veamos las buenas, porque de igual manera tiene muchas y muy buenas. Parte II: para ver asigna [ variable menosúltimo menosúltimo [ LoBueno LoMalo LoFeo ] ] muestra : variable fin Las cosas buenas no deberían ser tan complicadas como el anterior procedimiento. Y en eso hay que reconocerle a Logo el valor añadido que le otorga a la herramienta “micromundos pro”. Realmente no importa que esté mal traducido o que las palabras no sean las más bonitas, lo que se puede hacer con Logo es sencillamente excepcional. Todo depende de uno, del programador. Una parte desconocida de Logo es precisamente el potencial de que tienen las listas, no sólo como herramientas de programación sino como objetos de aprendizaje y objetos de desarrollo de pensamiento complejo. En esta sección vamos a ocuparnos un poco de las listas y vamos a esforzarnos por mostrar la belleza que estas le proveen a Logo y el potencial lógico de programación. Puesto que esta introducción está dirigida para profesores no nos ocuparemos de los aspectos de la enseñabilidad (el cómo enseñar a pensar con listas a los estudiantes); eso lo haremos más adelante. Una lista es un objeto que tiene cabeza y cola (algo así como un primero y un último elemento); pero una lista puede contener un solo elemento y en ese caso el único elemento es cabeza y cola a la vez (imagínese una fila en un supermercado; imagínese que sólo hay un cliente. Ese cliente, el único en la fila, es el primero y el último a la vez). Una lista también puede estar vacía, es decir que no tiene ningún elemento. Este por supuesto es el caso trivial, pero necesario (imagínese otra vez la fila en el supermercado; suponga que hay un solo cajero atendiendo, en algún momento el cajero se desocupará porque ha atendido a todos los de la fila y se queda a la espera que aparezca un cliente; durante ese tiempo, la fila está vacía). Repasemos: existe una lista vacía; existe una lista con un único miembro que es cabeza y cola y de ahí en adelante es claro que una lista con más de dos miembros tiene un primer elemento (la cabeza) y un último elemento (la cola). Ahora como de lo que se trata es de listas de datos y sabemos que los tipos de datos son numéricos, alfabéticos y alfanuméricos parece obvio pensar que los elementos de una lista son estos objetos; pero no, hay todavía más: los miembros de una lista pueden ser también listas. Para concretar, diremos que los elementos de una lista pueden ser “palabras” (objetos que no son listas) y “listas”. Así pues una lista es una colección ordenada (y esto es muy importante ya que las diferencia de los conjuntos) de palabras y/o listas. Las “palabras” pueden ser un dato numérico, un dato alfanumérico, un dato alfabético e incluso una operación o un conector (lógico). Con las listas podemos construir estructuras de datos que incluyen otras palabras y listas.
  • 4. Las listas se representan mediante corchetes cuadrados y sus elementos están contenidos dentro de éstos, así: [ 1 2 3 ] es una lista con tres miembros, a saber los datos numéricos 1, 2 y 3. En ésta lista la cabeza es el dato numérico 1 (uno) y la cola el dato numérico 3 (tres). Ahora si consideramos la lista [ 1 [ 2 3] ], se observa que es una lista que tiene una “palabra” (el dato numérico 1) y una “lista” (la lista que contiene los datos numéricos 2 y 3). Se tiene pues que la cabeza de la lista es el dato 1 y que la cola es la lista [2 3]. En ésta lista la cabeza es el dato 2 y la cola es el dato 3. Así que podemos decir que “la cabeza de la cola (la lista [2 3]) es 2” y que “la cola de la cola es 3”. En éste simple ejemplo se puede observar rápidamente la complejidad que entrañan las listas. Esto permite establecer que las listas [ 1 [ 2 3] ] y [ 1 [ 3 2] ] son distintas ya que “la cabeza de la cola” de la primera lista es distinta de “la cabeza de la cola” de la segunda lista y, de modo semejante “la cola de la cola” de la primera lista s distinta de la “cola de la cola” de la segunda lista. Esto siempre es así, pues si tiene la lista de listas vacías [ [ ] [ [ ] [ ] ] ] y se compara con la lista de listas vacías [ [ [ ] [ ] ] [ ] ] se observa que son distintas tanto las “cabezas” como las “colas”. Pero obviamente las listas son más claras si tienen objetos que nos sean familiares: [1 [1 2][7 [a b]]] Una pregunta inmediata es ¿cuántos elementos posee una lista? Aunque la pregunta parece sencilla de responder, entraña cierta dificultad. Veamos. La lista anterior contiene tres elementos: “una palabra, el número 1”; la lista [1 2] y la lista [7 [a b]. El segundo y tercer elemento son también listas. Otra pregunta básica es la diferencia entre una palabra y una lista; parece obvia. Gracias precisamente a la posibilidad de contar los elementos de una lista podemos establecer una denominación para cada elemento: a cada elemento de una lista lo llamaremos un ítem y está definido por su posición en la lista; así el ítem 4 corresponderá al elemento que se encuentra en la cuarta posición de la lista que como se dijo puede ser una lista o un caracter. En una palabra sus elementos son exclusivamente caracteres. Esta es la primera diferencia como objetos generales. Para Logo las diferencias pueden ser no tan evidentes para el usuario, por ejemplo Logo no reconoce de la misma manera una lista vacía y una palabra vacía, aunque devuelva lo mismo (un espacio). Se observa mejor esta situación si consideramos una lista que contenga una sola palabra y una sola palabra: muestra "palabra muestra [palabra] palabra palabra Aunque el resultado sea el mismo, son procesados como dos diferentes tipos de datos. Esto hace que las operaciones que actúen sobre una lista actúen sobre los ítems de modo distinto a como lo harían operaciones similares con las palabras. Es claro que las operaciones necesarias en una lista deben identificar los ítems, así que las primeras operaciones deben identificar el primero y último elemento sin por ello dejar de importar sus características. La operación en sí actúa sobre la posición y luego sobre el
  • 5. contenido ubicado en dicha posición; pero cualquier operación de este tipo debe disponer de una información previa: la cantidad de miembros de una lista; pues ¿cómo saber cuál es el último si no se dispone de ese dato? Una estructura operativa de posicionamiento sobre listas en general, responde a una regla de datos como: (cantidad de miembros: n; identificar primer elemento: ubicar puntero n-1 posiciones anteriores), si se trata del primer elemento. Si se tratara de ubicar el ítem k-ésimo la estructura sería: (cantidad de miembros: n; establecer si k<n; en caso afirmativo ubicar puntero (n-k) posiciones anteriores contadas desde el último elemento, en caso negativo indicar imposibilidad de actuar; si el caso es positivo, identificar k-ésimo miembro). Pareciera engorrosa la estructura ya que los humanos no pensamos así, ya que podemos pensar con datos incompletos (información borrosa) o asumir progresiones ascendentes sin importar la existencia de un último elemento. En las estructuras de datos orientadas a máquinas (tipo Von Newmann) ello podría implicar poner a la máquina en un loop infinito o en una situación en la que no puede parar. Pero bueno, los compiladores nos resuelven estos problemas para no tener que enfrentarnos directamente a ellos y Logo dispone de dos operaciones que nos ayudan en esta actividad: la primera sirve para contar los elementos de una lista y la segunda para ubicarse en la posición de un ítem en particular. Otra cosa es extraer el dato allí contenido. Para ello se debe disponer de una (o unas operaciones de extracción) cuya estructura de datos es semejante a como sigue: ((cantidad de miembros: n; establecer si k<n; en caso afirmativo ubicar puntero (n-k) posiciones anteriores contadas desde el último elemento, en caso negativo indicar imposibilidad de actuar); (si el caso es positivo, identificar k- ésimo miembro: establecer si el elemento es nulo –vacío-, si es una palabra o una lista; establecer la cantidad de memoria necesaria para el elemento y definir una variable temporal que contendrá una copia del elemento; copiar el elemento en la memoria temporal); si existe la petición mostrar contenido de la memoria temporal –o sea el elemento-). Estudiar la estructura interna de las listas y cómo actúan las operaciones sobre ellas es necesario si se quiere ir más allá de la simple manipulación de las listas; la programación requiere en ocasiones pensar como razona el diseñador de los compiladores (en éste caso el intérprete, ya que Logo es un lenguaje interpretado y no compilado –que es una verdadera lástima no disponer de un compilador Logo-). Si se disponen de las operaciones de extracción deben disponerse también de las operaciones de inserción (operaciones inversas) [obsérvese la semejanza con el manejo de las bases de datos; pero cuidado, las listas no son bases de datos aunque podemos usar listas para elaborar bases de datos –esto lo trataremos en un aparte especial-]. Resumiendo el manejo de las listas implica entender que se tiene a) un apuntador hacia el primer elemento de la lista y b) un apuntador hacia el resto de la lista. En particular Logo cuenta con un apuntador hacia el primer elemento de la lista: FIRST (en micromundos pro: primero), con un apuntador hacia el último elemento de la lista: LAST (en micromundos pro: último). La lista [ A B C D ] se almacena como una sucesión de apuntadores. En el primer nodo hay un apuntador hacia el elemento A y un apuntador hacia otro nodo, en éste hay un apuntador hacia B y otro hacia el nodo siguiente; el último nodo apuntará hacia el
  • 6. elemento D y hacia ninguna parte –un nodo nulo-. En el siguiente árbol se muestra el almacenamiento de la lista: Figura 1. Almacenamiento de la lista [ A B C D ] Obsérvese ahora el manejo de los apuntadores en la lista: [[A B] [C D]]: Figura 2. Almacenamiento de la lista [ [A B] [C D] ] Pregúntese ahora cómo serán los árboles de las listas: [A [B C D]], [A [B] [C D]], [[A B C] [D]], [[A] [B] [C D]]. Las primitivas Logo correspondientes a las operaciones mencionadas son: Primitiva definición ejemplo reporta primero Reporta el primer elemento de una lista. primero [A [B] [C D]] A último Reporta el último elemento de una lista último [A [B] [C D]] [C D] menosprimero Reporta la lista sin el primer elemento. menosprimero [[A B C] [[D]] [D]], menosúltimo Reporta la lista sin el último elemento. menosúltimo [[A B C] [[A B C]] [D]] ítem Reporta el elemento especificado de una ítem 2 [A [B] [C D]] [B] lista. (continuará ….)