Logo - Departamento de Lenguajes y Ciencias de la Computación
Download
Report
Transcript Logo - Departamento de Lenguajes y Ciencias de la Computación
EL LENGUAJE LOGO
Nicolás Carrascal Mesa
José María De Benito Saucedo
José David Gutiérrez Gutiérrez
Índice
2
Introducción
Historia de Logo
Mindstorms
Estado actual
Relación con otros lenguajes
Paradigmas de Logo
Conceptos de Logo
Primitivas del lenguaje
Ejemplos
Casos de estudio.
Introducción
3
Fue creado a mediados de los años 60.
Está inspirado en Lisp.
Es un lenguaje diseñado fines didácticos.
Centrado en la geometría.
Historia del Lenguaje Logo.
4
Creado en 1967, en el departamento de Inteligencia
Artificial del MIT.
Seymour Papert.
Wallace Feurzeig.
Cyntia Solomon.
Marvin Minsky
Historia del Lenguaje Logo.
5
El elemento más característico de Logo es la tortuga.
Cursor que realiza las operaciones de dibujo.
Llamado así por el robot usado para dibujar en los inicios del
lenguaje.
Historia del Lenguaje Logo.
6
Durante los años 70, se continuó desarrollando en el MIT
y en otros lugares como Edimburgo y Tasmania.
Se realizaron algunos proyectos de investigación en
escuelas de Massachusetts.
Empezó a generalizarse su uso a finales de los 70, con el
auge de los ordenadores personales.
Historia del Lenguaje Logo.
7
Las primeras versiones que alcanzaron cierta popularidad
fueron las desarrolladas para el Apple II y Texas
Instruments 99/4.
En 1980 se introdujeron varios ordenadores en algunos
colegios de Estados Unidos como parte de un proyecto
piloto.
Logo todavía sigue usándose en algunos de estos
colegios.
Historia del Lenguaje Logo.
8
En 1980 se fundó la Logo Computer Systems, Inc (LCSI).
La mayoría de los creadores de Logo participaron en esta
empresa.
Durante esta década surgieron las primeras versiones
comerciales de Logo.
TI Logo de Texas Instrument.
Apple Logo de la LCSI.
Historia del Lenguaje Logo.
9
El momento de máximo esplendor llegó con la publicación
de Mindstorms, de Seymour Papert.
Aumentó el uso de Logo en las aulas.
Se tradujo a multitud de idiomas y se implementó en una
gran variedad de máquinas:
MSX en Europa, América del Sur y Japón.
Atari y Commodore en América del Norte.
MacLogo (LCSI).
Object Logo (Coral Software)
PcLogo (Hardvard Associates)
Historia del Lenguaje Logo.
10
A mediados de los 80 se desarrolló Lego Logo.
Mitchel Resnik y Steve Ocko.
Alcanzó una gran popularidad.
A principios de los 90 se empezó a considerar logo como
algo obsoleto.
A pesar de ello, se siguió usando en algunos países.
En Inglaterra llegó a incluirse en el plan nacional de estudios
Mindstorms (Desafío a la mente)
11
En él, Seymour Papert ofrece una visión de la educación en
el futuro.
Relaciona el uso de ordenadores con las ideas de Piaget
sobre el desarrollo cognitivo (Contructivismo).
Adaptación por asimilación y acomodación con realimentación.
El pensar se configura por la información que el sujeto va recibiendo.
Aprendizaje factores externos vs aprendizaje interno y
activado por la experiencia
Mindstorms (Desafío a la mente)
12
Construccionismo de Papert.
El
juego como elemento importante en el proceso de
aprendizaje.
Conseguir
Los
que el niño piense de manera formal.
ordenadores:
pueden
ser programados
están sustentados por ideas matemáticas.
El niño llegará gradualmente, a convertirse en programador de
la máquina.
Desarrollo por cultura vs desarrollo por edad.
Estado actual
13
Microworlds.
Su primera versión la lanzó la LCSI en 1993.
Introducía multitarea y procesamiento paralelo.
Existen muchas versiones diferentes.
Todavía se comercializa y utiliza en la actualidad.
Estado actual
14
UCBLogo
Escrito por Brian Harvey en la universidad de Berkeley.
Una de las versiones más conocidas.
Versiones para DOS, Windows, Unix, MacOS.
Su última versión es la 6.0
(Septiembre de 2008)
Estado actual
15
MSWLogo.
Desarrollado por George Mills
La última versión es la 6.5b (Diciembre de 2002)
FMSLogo.
Desarrollado por David Constanzo.
La última versión es de diciembre de 2009
Construidas a partir del núcleo de UCB.
Todavía se usa en colegios de Australia y Reino Unido.
Estado actual
16
StarLogo
Desarrollado por Mitchel Restnick y Eric Klopfer en el MIT.
Se considera un lenguaje derivado en lugar de una versión.
Lleva el paralelismo a un nivel superior.
Miles de procesos actúan a la vez.
Usado para simulaciones de varios agentes.
La versión más actual es Starlogo TNG 1.5.1 (Enero de 2011).
Estado actual
17
NetLogo
Desarrollado por Uri Wilensky.
Escrito en Java y Scala.
Influenciado por StarLogo
Centrado en el uso de un gran número de agentes que actúan de
manera independiente.
Exploración de fenómenos complejos.
Librerías para modelar sistemas de dominios muy dispares,
(económicos, biológicos, físicos, químicos....)
La última versión es la 4.1.2 (Diciembre 2010)
Estado actual
18
En la actualidad se cuentan unas 197 implementaciones
distintas de Logo.
No existe un estándar Logo
Muchas de ellas desfasadas.
La versión UCB es lo más parecido.
En lo sucesivo, se referirá a Xlogo
Interprete escrito en Java.
Licencia GPL.
http://xlogo.tuxfamily.org/
Relación con otros lenguajes.
19
Logo también ha influido en los siguientes lenguajes:
Smalltalk
Creado por Alan Kay, Dan Ingalls y Adele Goldberg.
Es un lenguaje orientado a objetos dinámicamente tipificado.
Creado, en parte, como lenguaje destinado al uso didáctico para
llevar a cabo la teoría construccionista del aprendizaje
Etoys:
Desarrollado por Dan Ingalls.
Es un lenguaje orientado a objetos y basado en prototipos
Usado en la enseñanza. Con un entorno muy amigable.
Relación con otros lenguajes.
20
Scratch:
Creado por Mitchel Resnick en 2007.
Lenguaje dedicado a la enseñanza.
Permite experimentar con los conceptos que tiene un lenguaje
de alto nivel mediante el uso de una sencilla interfaz gráfica.
Rebol (Relative Expression Based Object Language)
Desarrollado por Carl Sassenrath en 1997.
Es un lenguaje de intercambio de datos.
Utilizado para programar aplicaciones de Internet (clientes y
servidores) , bases de datos, y aplicaciones multimedia.
Paradigmas de Logo
21
Funcional:
Procedural:
Es un lenguaje funcional, herencia que recibe
directamente de Lisp.
Este concepto deriva de la programación estructurada, y
significa que el lenguaje se basa en llamadas a rutinas.
Interpretado:
Diseñado para ejecutarse a través de un intérprete y no
compilado.
Paradigmas de Logo
22
Reflectivo:
Son aquellos que tienen la capacidad de observar y
modificar su estructura de alto nivel.
En los lenguajes que no distinguen entre tiempo de ejecución y
tiempo de compilación, no hay diferencia entre compilación o
interpretación de código y reflexión.
Educativo:
Diseñado para la enseñanza.
Conceptos de Logo.
23
El cursor o tortuga se controla mediante comando que
hacen referencia a su posición relativa.
Avanza
Retrocede
Giraizquierda
Giraderecha
Conceptos de Logo.
24
La tortuga también puede controlarse mediante
coordenadas cartesianas.
posicion
ponx
pony
ponxy
ponrumbo
hacia
centro
Conceptos de Logo.
25
Las expresiones consisten en:
Nombre de procedimiento.
Una o varias expresiones (argumentos).
Logo primero evalúa las subexpresiones del argumento y
luego invoca al procedimiento.
Para que no se evalúe una expresión, debe ir precedida
por comillas doble (“).
Conceptos de Logo.
26
Variables.
Pueden ser globales o locales
En Xlogo las variables locales no son accesibles por los
procedimientos llamados.
Para acceder a una variable, su nombre debe ir
precedido por dos puntos (:)
Tipos.
Numero
Palabra
Lista
Conceptos de Logo.
27
Lista de propiedades
Un tipo especial, consistente en un nombre seguido por una
serie de pares (atributo, valor)
Ej:
En algunas implementaciones (UCBLogo) también existe el
tipo array.
Primitivas del lenguaje.
28
Se puede modificar las propiedades de la tortuga
muestratortuga / ocultatortuga
subelapiz / bajalapiz
poncolorlapiz
pongrosor
ponformalapiz
Primitivas del lenguaje.
29
Operaciones aritméticas
Suma, multiplica, seno…
Operaciones lógicas
Y, o, no.
Tests (número?, entero?, vacio?, …)
Primitivas del lenguaje.
30
Operaciones con variables
haz, local, borra, …
ejecuta: Ejecuta la lista de instrucciones contenida en una lista.
Ej:
Ej: arcoiris
Primitivas del lenguaje.
31
Operaciones con listas
Palabra, lista, primero, ultimo, elemento, agrega, reemplaza,
…
Ej:
Estructuras de control
32
Condicional
si expresión_lógica [comandos1] [comandos2]
Ej:
Si en lugar de lista de comandos, se quiere utilizar variables,
hay que utilizar sisino.
Ej:
Estructuras de control
33
En otras implementaciones de Logo tenemos las estructuras
condicionales SI y SISINO con el siguiente esquema:
si expresión_lógica [comandos1]
sino expresión_lógica [comandos1] [comandos2]
Por ello, la posible explicación de que se mantenga el SISINO en
XLogo puede ser por la conservación de la sintaxis tradicional de
Logo más que por su utilidad.
Estructuras de control
34
Bucle repeat
repite n [ lista_de_comandos ]
Ej:
La variable contador indica en número de la iteración en curso
Bucle While
mientras [lista_a_evaluar] [ lista_de_comandos ]
Ej:
Estructuras de control
35
Bucle for
repitepara [ lista1 ] [ lista2 ]
Ej:
Bucle for each
paracada nombre_variable lista_o_palabra [ lista_de_comandos ]
Ej:
Ejemplos:
Básico
36
• Futuro de un verbo: Conjuga el futuro de un verbo regular para
todas las personas. Para ello hay almacenadas dos listas, una
con los pronombres personales y otra con las terminaciones.
futurolistas "comer
yo comere
tu comeras
el comera
nosotros comeremos
vosotros comereis
ellos comeran
Ejemplos:
Básico
37
• Círculo de palabras: Se dibuja una circunferencia con 40
puntos equidistantes desde los cuales se escribe “Logo forever”.
Ejemplos:
Básico
38
• Casas: Se dibujan 4 casas cada una de un tamaño mayor que
la anterior. La figura de la casa se compone de un cuadrado y un
triángulo generados por separado.
Ejemplos:
Azar
39
• Figuras aleatorias: Se rellena el área de dibujo con estrellas,
lunas y peces coloreados y colocados aleatoriamente.
Ejemplos:
Azar
40
• Alambres aleatorios: Se rellena el área de dibujo con alambres
de distintos tipos coloreados y colocados aleatoriamente.
Mediante el dibujado de la imagen
Sucesivas veces con diferente
grosor y tonalidades del mismo color
se consigue el efecto de profundidad.
Ejemplos:
Azar
41
• Grietas: Se generan grietas con posición y dirección aleatorias
que terminan al colisionar con otra grieta o con el marco del área
de dibujo. Tras haber generado las grietas se colorean
aleatoriamente algunas zonas.
Ejemplos:
Espirales
42
• Rosa: Mediante la superposición de 4 pares de espirales
simétricas y giradas 90 grados respecto a la anterior se crea la
imagen de una rosa.
Imagen de detalle de un par de
espirales simétricas.
.
Ejemplos:
Nubes de puntos
43
• Toro de KAM: Se dibuja un "Toro de KAM". El teorema de
KAM se usa en Física Cuántica para explicar la existencia
de curvas estables (toros de KAM) bajo pequeñas
perturbaciones de un sistema mecánico.
Ejemplos:
Curvas en coordenadas polares
44
• Espirales en polares.
o Espiral de Arquímedes: Las vueltas sucesivas de la espiral
tienen distancias de separación constantes.
Ejemplos:
Curvas en coordenadas polares
45
o Espiral de Fermat: El radio es proporcional a la raíz
cuadrada del ángulo, por lo que cada par de vueltas tendrá
menos separación que el anterior.
Ejemplos:
Curvas en coordenadas polares
46
o Espiral Equiangular: El radio depende exponencialmente
del ángulo, por lo que la espiral crece muy rápidamente.
Ejemplos:
Curvas en coordenadas polares
47
o Orquídea de Arquímedes: Es el resultado de añadir a la
espiral de Arquímedes una pequeña ondulación.
Ejemplos:
3D
48
• En XLogo se puede pasar al modo 3D utilizando la primitiva
perspectiva. Cuando usamos dicha primitiva, la forma y
orientación de la tortuga cambian.
• Los semiejes en el espacio de tres dimensiones se
dispondrían de la siguiente forma en el área de trabajo.
Ejemplos:
3D
49
• El cuadrado dibujado anteriormente en el modo 2D ahora se
vería de la siguiente forma:
• Las primitivas básicas de las que disponemos son:
o subenariz y bajanariz: La tortuga cambia a un eje de
dirección superior o inferior al actual.
o balanceaderecha y balanceaizquierda: La tortuga rota
alrededor del eje de dirección en el que nos encontramos.
Ejemplos:
3D
50
• Tetraedro: Se genera un tetraedro compuesto por trigángulos
dispuestos en el espacio de tres dimensiones.
Ejemplos:
3D
51
• Dado: Se crea un dado en 3 dimensiones. Está basado en la
creación del cubo añadiendo una función generadora de puntos.
Ejemplos:
3D
52
• Hórreo asturiano: Se genera un hórreo asturiano. Es una
construcción destinada a guardar y conservar los alimentos,
alejados de la humedad y de los animales.
Ejemplos:
Multitortuga
53
• XLOGO permite trabajar con varias tortugas en pantalla al
mismo tiempo.
• El número máximo de tortugas se configura en el panel de
preferencias o con la primitiva ponmaximastortugas.
• Se utiliza la primitiva pontortuga para elegir la tortuga que se
desea controlar. Si esta tortuga no existe, se creará.
• Las nuevas tortugas no se muestran hasta que se
ejecuta muestratortuga, y en ese momento se colocan en el
origen.
Ejemplos:
Multitortuga
54
• Bacterias: Se simula la vida de 32 bacterias vistas a través de
un microscopio. Sólo se les distingue por su contorno (la pared
celular).
Ejemplos:
Multitortuga
55
• Curvas de persecución: Una serie de tortugas dispuestas en el
borde de un círculo seguirán, cada una de ellas, a la tortuga que
tengan a su izquierda. En este recorrido se generará una especie
de espiral.
Ejemplos:
Fractales
56
¿Qué es un fractal?
Ejemplos:
Fractales
57
¿Qué es un fractal?
Ejemplos:
Fractales
58
¿Qué es un fractal?
Ejemplos:
Fractales
59
¿Qué es un fractal?
Ejemplos:
Fractales
60
“Las nubes no son esferas, las montañas no son
conos, las costas no son círculos, y las cortezas
de los árboles no son lisas, ni los relámpagos
viajan en una línea recta.”
Mandelbrot, Introduction to The Fractal Geometry of
Nature
Ejemplos:
Fractales
61
“Definición”: Un fractal es un objeto semigeométrico cuya
estructura básica, fragmentada o irregular, se repite a
diferentes escalas.
Además por lo general cumplen que:
Es demasiado irregular para ser descrito en términos
geométricos tradicionales.
Posee detalle a cualquier escala de observación.
Es autosimilar.
Ejemplos:
Fractales
62
Su dimensión de Hausdorff-Besicovitch es estrictamente mayor
que su dimensión topológica.
Se define mediante un algoritmo recursivo.
Ejemplos:
Fractales
63
Ejemplos clásicos:
Función
Copo
de Wierstrass
de Koch:
Alfombra
de Sierpienski:
Ejemplos:
Fractales: Los conjuntos de Julia.
64
Los conjuntos de Julia:
Llamados
así por el francés Gastón Julia unos de los
primeros pioneros en este campo.
Se
obtienen al aplicar sucesivas veces una función
holomorfa (compleja e infinitamente diferenciable).
Estos
conjuntos se representan mediante un algoritmo
en que cada pixel se colorea según el número de
iteraciones necesarias para “escapar”.
Ejemplos:
Fractales: Los conjuntos de Julia
65
Una familia muy común es:
= z2 + c (donde c es un número complejo).
Algunos ejemplos:
fc(z)
c=φ-2
c=(φ−2)+(φ−1)
c=-0.835-0.2321i
Ejemplos:
Fractales: Los conjuntos de Mandelbrot
66
Los conjuntos de Mandelbrot:
Fueron
descubiertos por Benoît Mandelbrot en la
década de los setenta del siglo XX.
Vienen definidos por la siguiente relación:
Ejemplos:
Fractales
67
Brócoli:
Árbol:
Ejemplos:
Fractales
68
Sierpiensky gasket:
Copos de Koch:
Ejemplos:
Otras aplicaciones.
69
Aproximación de pi.
Cubo en 3-D.
Arcoiris-Multitortuga.
Curvas Polares.
Ejemplos:
Otras aplicaciones
70
Juego de las Cerillas.
Animaciones.
Compiladores….
Y Mucho más. …….
Casos de estudio
71
¿Dónde se utiliza Logo?
- Logo es un lenguaje diseñado con fines didácticos, por tanto es un
lenguaje que surgió para complementar clases y ayudar en el
aprendizaje activo de los niños.
- Seymour Papert pretendía con ello, seguir su teoría construccionista
de la enseñanza. Esta teoría promueve que el alumno participe y esté
muy involucrado dentro de su propio aprendizaje.
- En un principio el lenguaje fue creado para la enseñanza de las
Matemáticas . Pero estudios posteriores demuestran que Logo también es
útil para el aprendizaje de otras materias
Casos de estudio
72
El lenguaje de programación Logo fue desarrollado en primera
instancia para ayudar a los niños a aprender conceptos
matemáticos.
Niños de primaria aplican nociones matemáticas tales como
número, aritmética, estimación, medida, patrones, proporción,
simetría en su trabajo con Logo.
Estudios demuestran que el uso de Logo mejora hasta un 10 % el
aprendizaje de estos conceptos.
Casos de estudio
73
Logo puede ayudar a los niños a aprender
niveles superiores de pensamiento geométrico
Logo también ayuda a los alumnos a ser mucho
más precisos a la hora de medir.
Por último, los estudios realizados también
demuestran que los alumnos son entienden de una
manera más profunda el concepto de ángulo.
Casos de estudio
74
Logo ayuda a entender el concepto de variable a los
alumnos.
Los alumnos planifican de manera más efectiva.
Representan las tareas a planificar en forma diferente.
Perseveran en la resolución de problemas.
Casos de estudio
75
Aumenta la comprensión lectora de los alumnos.
Son mejores solucionando conflictos y problemas.
Tienen un mayor autocontrol de sí mismos.
Ayuda a los niños en su integración
social.
Bibliografía
76
Libros:
Logo: Models and Methods for Problem Solving.
Advanced Logo, A Language for Learning.
Computer Science Logo Style.
Páginas Webs
Logo Foundation:
http://el.media.mit.edu/logo-foundation/
Paraíso de Logo:
http://neoparaiso.com/logo/
Última actualización: Abril 2011.
Última actualización: Septiembre 2010.
Página de Xlogo:
http://xlogo.tuxfamily.org/
Última actualización: Noviembre 2010.