174
Programaci´ on Declarativa Representaci´ on Gr´ afica en Scheme TRABAJO DE TEOR ´ IA Representaci´ on Gr´ afica en Scheme Asignatura de Programaci´ on Declarativa Francisco Javier Rodr´ ıguez Lozano Escuela Polit´ ecnica Superior Universidad de C´ordoba Curso acad´ emico 2013 - 2014 Universidad de C´ordoba 4 o Grado Ingenier´ ıa Inform´ atica:Computaci´on 1/ 174

TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

TRABAJO DE TEORIARepresentacion Grafica en Scheme

Asignatura de Programacion Declarativa

Francisco Javier Rodrıguez Lozano

Escuela Politecnica SuperiorUniversidad de Cordoba

Curso academico 2013 - 2014

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 1 / 174

Page 2: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Indice

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 2 / 174

Page 3: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Indice

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 3 / 174

Page 4: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Indice

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 4 / 174

Page 5: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Indice

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 5 / 174

Page 6: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Indice

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 6 / 174

Page 7: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Indice

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 7 / 174

Page 8: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Introduccion

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 8 / 174

Page 9: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionOrigen

1 IntroduccionOrigenCaracterısticas del lenguajeCaracterısticas Graficas

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 9 / 174

Page 10: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionOrigen

Surgio por el interrogante:

¿Como serıa LISP con reglas de Ambito Lexico o Estatico?

Nota

Originalmente llamado Schemer, su nombre actual se debe a que elS.O.ITS limitaba la longitud de los nombres de fichero a 6

caracteres.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 10 / 174

Page 11: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionOrigen

Surgio por el interrogante:

¿Como serıa LISP con reglas de Ambito Lexico o Estatico?

Nota

Originalmente llamado Schemer, su nombre actual se debe a que elS.O.ITS limitaba la longitud de los nombres de fichero a 6

caracteres.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 11 / 174

Page 12: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas del lenguaje

1 IntroduccionOrigenCaracterısticas del lenguajeCaracterısticas Graficas

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 12 / 174

Page 13: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas del lenguaje

A destacar:

Implementacion mas eficiente de la recursion

Funciones de primera clase.

Reglas semanticas rigurosas.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 13 / 174

Page 14: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas del lenguaje

A destacar:

Implementacion mas eficiente de la recursion

Funciones de primera clase.

Reglas semanticas rigurosas.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 14 / 174

Page 15: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas del lenguaje

A destacar:

Implementacion mas eficiente de la recursion

Funciones de primera clase.

Reglas semanticas rigurosas.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 15 / 174

Page 16: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas Graficas

1 IntroduccionOrigenCaracterısticas del lenguajeCaracterısticas Graficas

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 16 / 174

Page 17: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas Graficas

Algunas caracterısticas

Dibujar figuras sencillas

Crear ventanas

Interactuar con las ventanas

Representar funciones complejas de forma sencilla

...

Nota

Para que sea posible realizar tareas graficas, es necesario cargar lalibrerıa grafica por medio de la orden:(require (lib ”graphics.ssgraphics”))

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 17 / 174

Page 18: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas Graficas

Algunas caracterısticas

Dibujar figuras sencillas

Crear ventanas

Interactuar con las ventanas

Representar funciones complejas de forma sencilla

...

Nota

Para que sea posible realizar tareas graficas, es necesario cargar lalibrerıa grafica por medio de la orden:(require (lib ”graphics.ssgraphics”))

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 18 / 174

Page 19: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas Graficas

Algunas caracterısticas

Dibujar figuras sencillas

Crear ventanas

Interactuar con las ventanas

Representar funciones complejas de forma sencilla

...

Nota

Para que sea posible realizar tareas graficas, es necesario cargar lalibrerıa grafica por medio de la orden:(require (lib ”graphics.ssgraphics”))

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 19 / 174

Page 20: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas Graficas

Algunas caracterısticas

Dibujar figuras sencillas

Crear ventanas

Interactuar con las ventanas

Representar funciones complejas de forma sencilla

...

Nota

Para que sea posible realizar tareas graficas, es necesario cargar lalibrerıa grafica por medio de la orden:(require (lib ”graphics.ssgraphics”))

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 20 / 174

Page 21: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas Graficas

Algunas caracterısticas

Dibujar figuras sencillas

Crear ventanas

Interactuar con las ventanas

Representar funciones complejas de forma sencilla

...

Nota

Para que sea posible realizar tareas graficas, es necesario cargar lalibrerıa grafica por medio de la orden:(require (lib ”graphics.ssgraphics”))

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 21 / 174

Page 22: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

IntroduccionCaracterısticas Graficas

Algunas caracterısticas

Dibujar figuras sencillas

Crear ventanas

Interactuar con las ventanas

Representar funciones complejas de forma sencilla

...

Nota

Para que sea posible realizar tareas graficas, es necesario cargar lalibrerıa grafica por medio de la orden:(require (lib ”graphics.ssgraphics”))

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 22 / 174

Page 23: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Comandos

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 23 / 174

Page 24: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosApertura y de graficos

2 ComandosApertura y de graficosCreacion y cierre de ventanasPosicionesColoresDibujosTextoPixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 24 / 174

Page 25: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosApertura y de graficos

Inicializacion:

(open-graphics)

Inicializa las rutinas de la librerıa grafica.

Nota

Debe llamarse antes que ningun otro procedimiento.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 25 / 174

Page 26: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosApertura y de graficos

Cierre:

(close-graphics)

Cierra todas las ventanas

Nota

Despues de su llamada para acceder a otro procedimiento graficoes necesario volverlos a inicializar con (open-graphics).

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 26 / 174

Page 27: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosCreacion y cierre de ventanas

2 ComandosApertura y de graficosCreacion y cierre de ventanasPosicionesColoresDibujosTextoPixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 27 / 174

Page 28: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosCreacion y cierre de ventanas

Creacion:

(open-viewport nombreVentana ancho alto)

+ nombreVentana: es el nombre que le daremos a la ventana .+ ancho: especifica el ancho en pıxeles de la ventana.+ alto: especifica el alto en pıxeles de la ventana.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 28 / 174

Page 29: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosCreacion y cierre de ventanas

Cierre:

(close-viewport nombreVentana)

+ nombreVentana: es el nombre de la ventana que queremoscerrar.

Nota

Con este procedimiento cerramos solo la ventana que indicamos, esdecir, las demas ventanas no sufren cambio alguno.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 29 / 174

Page 30: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosCreacion y cierre de ventanas

Ejemplo

;; Carga la biblioteca de graficos:(require (lib ”graphics.ss” ”graphics”));; Inicializar los graficos:(open-graphics);; Anchura de la ventana de graficos(define horizontal 700);; Altura de la ventana de graficos(define vertical 600);; Se crea una ventana grafica(define ventana (open-viewport ”ejemplo” horizontal vertical) )

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 30 / 174

Page 31: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosCreacion y cierre de ventanas

Ejemplo

Uso de open-viewport

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 31 / 174

Page 32: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPosiciones

2 ComandosApertura y de graficosCreacion y cierre de ventanasPosicionesColoresDibujosTextoPixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 32 / 174

Page 33: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPosiciones

Ejes de coordenadas:

En Scheme la posicion de un objeto en la ventana es un tantoespecial ya que:

+ No existen coordenadas negativas.+ El eje de abscisas va desde el origen(lado izquierdo de la

ventana), hasta el final de la ventana(lado derecho de laventana).

+ El eje de ordenadas es exactamente igual pero de arriba aabajo.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 33 / 174

Page 34: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPosiciones

Ejemplo

Punto origen en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 34 / 174

Page 35: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPosiciones

Objetos posicion:

(make-posn coord X coord Y)

+ coord X: coordenada X del objeto+ coord Y: coordenada Y del objeto

Ejemplo

;; Carga la biblioteca de graficos:(require (lib ”graphics.ss” ”graphics”));;cramos un objeto de tipo posicion(define objeto (make-posn 100.0 30))

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 35 / 174

Page 36: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPosiciones

Predicados de objetos posicion:

(posn? objeto)

Devuelve #t si objeto es de tipo posicion

Devuelve #f en caso contrario

Obtencion de coordenadas:

(posn-x objeto)

+ Devuelve la coordenada X del objeto de tipo posicion.

(posn-y objeto)

+ Devuelve la coordenada Y del objeto de tipo posicion.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 36 / 174

Page 37: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPosiciones

Ejemplo

;; Carga la biblioteca de graficos:(require (lib ”graphics.ss” ”graphics”));;cramos un objeto de tipo posicion(define objeto (make-posn 100.0 30));;devuelve #t(posn? objeto);;devuelve 100.0(posn-x objeto);;devuelve 30(posn-y objeto)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 37 / 174

Page 38: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

2 ComandosApertura y de graficosCreacion y cierre de ventanasPosicionesColoresDibujosTextoPixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 38 / 174

Page 39: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Tres formas de crear colores:

Como un indice de color [0-299], ambos incluidos.

Como una cadena que simboliza su color.

+ p.e. ”red”, ”blue”, ”green”, etc.

Como un objeto de tipo RGB.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 39 / 174

Page 40: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Como un objeto RGB:

Es necesario utilizar el metodo (make-rgb rojo verde azul)

+ Los parametros rojo, verde y azul simbolizan su color con unvalor comprendido entre [0-1].

Si queremos comprobar que un objeto es de tipo RGB, solotenemos que utilizar el predicado (rgb? objeto) donde:

+ Devuelve #t si objeto es de tipo RGB+ Devuelve #f en caso contrario

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 40 / 174

Page 41: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Ejemplo

;; Carga la biblioteca de graficos:(require (lib ”graphics.ss” ”graphics”));; Inicializar los graficos:(open-graphics);;Define un nuevo color RGB(define color (make-rgb 0.1 0.2 1));;Devuelve #t, ya que color es RGB(rgb? color)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 41 / 174

Page 42: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Obtencion de colores:

(rgb-red objeto), (rgb-green objeto), (rgb-blue objeto)

+ Obtiene el valor rojo, verde y azul respectivamente del objetoRGB

((get-pixel ventana) pixel):

+ ventana: ventana creada con open-viewport.+ pixel: objeto de tipo posicion creado con make-posn.+ Este predicado devuelve: (0) para denotar que el color del pıxel

es blanco, y (1) para representar que no es blanco

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 42 / 174

Page 43: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Obtencion de colores[continuacion]:

((get-color-pixel ventana) pixel):

+ Los argumentos son los mismos de antes, pero en este casodevuelve un objeto de tipo RGB con los colores del pıxel

((test-pixel ventana) color):

+ Devuelve un objeto de tipo RGB, con el color que actualmentese utiliza para dibujar.

(change-color indice rgb):

+ Cambia el color del indice en la tabla de colores con el colorespecificado en rgb

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 43 / 174

Page 44: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Obtencion de colores[continuacion]:

(default-display-is-color?):

+ Devuelve #t si el dispositivo por defecto donde se mostraranlas ventanas es en color

+ Devuelve #f en caso contrario

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 44 / 174

Page 45: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Ejemplo

;; Carga la biblioteca de graficos:(require (lib ”graphics.ss” ”graphics”));; Inicializar los graficos:(open-graphics);; Anchura de la ventana de graficos(define horizontal 700);; Altura de la ventana de graficos(define vertical 600);;Se vera en las secciones siguientes(define ventana (open-viewport ”ejemplo” horizontal vertical) );;....

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 45 / 174

Page 46: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Ejemplo;;....;;Se vera en las secciones siguientes((draw-line ventana)(make-posn 100.0 30) (make-posn 200 60) ”red”);;obtenemos un pıxel(define pixel ((get-color-pixel ventana) (make-posn 200 60)));;devuelve 1(rgb-red pixel);;devuelve 0(rgb-green pixel);;devuelve 0(rgb-blue pixel)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 46 / 174

Page 47: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Ejemplo

;; Carga la biblioteca de graficos:(require (lib ”graphics.ss” ”graphics”));;Devuelve #t, ya que la ventana es en color(default-display-is-color?)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 47 / 174

Page 48: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Colores RGB a traves de ındices en tablas:

Una forma de pasar colores de cualquier tabla que nos den, aun valor en RGB, serıa la division entre:

Valor RGB de la tabla

Valor maximo RGB en la tabla

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 48 / 174

Page 49: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Ejemplo

Ejemplo tabla colores con ındices

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 49 / 174

Page 50: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosColores

Ejemplo

Para un color con R:0 G:128 B:0 de la tabla anterior, obtenemosque el valor en RGB para Scheme es:

0

255,

128

255,

0

255= [0, 0,50, 0]

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 50 / 174

Page 51: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

2 ComandosApertura y de graficosCreacion y cierre de ventanasPosicionesColoresDibujosTextoPixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 51 / 174

Page 52: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando en ventanas:

((draw-viewport ventana) [color])

+ Dibuja una ventana dada, del color especificado o si se omitese dibuja de color negro.

((clear-viewport ventana))

+ Borra el contenido de una ventana dada.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 52 / 174

Page 53: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;; Carga la biblioteca de graficos:(require (lib ”graphics.ss” ”graphics”));; Inicializar los graficos:(open-graphics);; Anchura de la ventana de graficos(define horizontal 700);; Altura de la ventana de graficos(define vertical 600);; Se crea una ventana grafica(define ventana (open-viewport ”ejemplo” horizontal vertical) )((draw-viewport ventana) ”green”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 53 / 174

Page 54: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Resultado draw-viewport

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 54 / 174

Page 55: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Nota

A partir de esta pagina, como los parametros de dibujar y eliminarson equivalentes no se explicaran los de esta ultima

Nota

Para dibujar se puede utilizar las funciones draw, como las queutilizan flip preo su resultado al dibujar y eliminar es el mismo.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 55 / 174

Page 56: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando pıxeles:

((draw-pixel ventana) posicion [color])

+ ventana: ventana creada con open-viewport.+ posicion: objeto de tipo posicion creado con make-posn.+ [color]: parametro opcional que representa el color del pıxel,

por defecto es negro.

((clear-pixel ventana) posicion)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 56 / 174

Page 57: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos un pixel((draw-pixel ventana)(make-posn 100.0 30) ”red”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 57 / 174

Page 58: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Pıxel en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 58 / 174

Page 59: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando lıneas:

((draw-line ventana) posicionA posicionB [color])

+ ventana: ventana creada con open-viewport.+ posicionA: objeto de tipo posicion creado con make-posn.+ posicionB: objeto de tipo posicion creado con make-posn.+ [color]: parametro opcional que representa el color de la lınea,

por defecto es negro.

((clear-line ventana) posicionA posicionB )

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 59 / 174

Page 60: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos una linea((draw-line ventana)(make-posn 100.0 30) (make-posn 200 60)”red”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 60 / 174

Page 61: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Lınea en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 61 / 174

Page 62: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando rectangulos:

((draw-rectangle ventana) posicion altura anchura [color])

+ ventana: ventana creada con open-viewport.+ posicion: objeto de tipo posicion creado con make-posn.+ altura: dato de tipo numerico que representa la altura.+ anchura: dato de tipo numerico que representa la anchura.+ [color]: parametro opcional que representa el color del

rectangulo, por defecto es negro.

((clear-rectangle ventana) posicion altura anchura)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 62 / 174

Page 63: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos un rectangulo((draw-rectangle ventana)(make-posn 100.0 30) 100 50 ”red”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 63 / 174

Page 64: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Rectangulo en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 64 / 174

Page 65: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando rectangulos solidos:

((draw-solid-rectangle ventana) posicion altura anchura[color])

+ ventana: ventana creada con open-viewport.+ posicion: objeto de tipo posicion creado con make-posn.+ altura: dato de tipo numerico que representa la altura.+ anchura: dato de tipo numerico que representa la anchura.+ [color]: parametro opcional que representa el color del

rectangulo, por defecto es negro.

((clear-solid-rectangle ventana) posicion altura anchura)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 65 / 174

Page 66: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos un rectangulo solido((draw-solid-rectangle ventana)(make-posn 100.0 30) 100 50”red”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 66 / 174

Page 67: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Rectangulo solido en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 67 / 174

Page 68: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando elipses:

((draw-ellipse ventana) posicion altura anchura [color])

+ ventana: ventana creada con open-viewport.+ posicion: objeto de tipo posicion creado con make-posn.+ altura: dato de tipo numerico que representa la altura.+ anchura: dato de tipo numerico que representa la anchura.+ [color]: parametro opcional que representa el color de la elpisel,

por defecto es negro.

((clear-ellipse ventana) posicion altura anchura)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 68 / 174

Page 69: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos una elipse((draw-ellipse ventana)(make-posn 100.0 30) 50 100 ”red”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 69 / 174

Page 70: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Elipse en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 70 / 174

Page 71: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando elipses solidas:

((draw-solid-ellipse ventana) posicion altura anchura [color])

+ ventana: ventana creada con open-viewport.+ posicion: objeto de tipo posicion creado con make-posn.+ altura: dato de tipo numerico que representa la altura.+ anchura: dato de tipo numerico que representa la anchura.+ [color]: parametro opcional que representa el color de la elipse,

por defecto es negro.

((clear-solid-ellipse ventana) posicion altura anchura)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 71 / 174

Page 72: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos una elipse solida((draw-solid-ellipse ventana)(make-posn 100.0 30) 50 100 ”green”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 72 / 174

Page 73: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Elpise solida en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 73 / 174

Page 74: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando polıgonos:

((draw-polygon ventana) x-posiciones posicion [color])

+ ventana: ventana creada con open-viewport.+ x-posiciones: Lista de objetos de tipo posicion creados con

make-posn.+ posicion: objeto de tipo posicion creado con make-posn,

considerado como desplazamiento.+ [color]: parametro opcional que representa el color del

polıgono, por defecto es negro.

((clear-polygon ventana) x-posiciones posicion)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 74 / 174

Page 75: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos un polıgono((draw-polygon ventana) (list (make-posn 10 20)

(make-posn 1 30)(make-posn 3 40)(make-posn 100 20))

(make-posn 100.0 30) ’”red”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 75 / 174

Page 76: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Polıgono de cuatro vertices en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 76 / 174

Page 77: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Dibujando polıgonos solidos:

((draw-solid-polygon ventana) x-posiciones posicion [color])

+ ventana: ventana creada con open-viewport.+ x-posiciones: Lista de objetos de tipo posicion creados con

make-posn.+ posicion: objeto de tipo posicion creado con make-posn,

considerado como desplazamiento.+ [color]: parametro opcional que representa el color del

polıgono, por defecto es negro.

((clear-solid-polygon ventana) x-posiciones posicion)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 77 / 174

Page 78: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos un polıgono solido((draw-solid-polygon ventana) (list (make-posn 10 20)

(make-posn 1 30)(make-posn 3 40)(make-posn 100 20))

(make-posn 100.0 30) ’”red”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 78 / 174

Page 79: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosDibujos

Ejemplo

Polıgono solido de cuatro vertices en Scheme

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 79 / 174

Page 80: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosTexto

2 ComandosApertura y de graficosCreacion y cierre de ventanasPosicionesColoresDibujosTextoPixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 80 / 174

Page 81: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosTexto

Escribiendo cadenas de texto:

((draw-string ventana) posicion cadena [color])

+ ventana: ventana creada con open-viewport.+ posicion: objeto de tipo posicion creado con make-posn,

considerado como el vertice inferior izquierdo dondeempezara la cadena.

+ cadena: cadena de caracteres que se dibujara en la ventana.+ [color]: parametro opcional que representa el color de la

cadena, por defecto es negro.

((clear-string ventana) posicion cadena)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 81 / 174

Page 82: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosTexto

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Dibujamos una cadena de texto((draw-string ventana) (make-posn 10 50) ”ESTO ES UN EJEMPLO DE

CADENA EN VENTANA”)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 82 / 174

Page 83: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosTexto

Ejemplo

Cadena de texto en ventana

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 83 / 174

Page 84: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosTexto

Tamano de cadenas de texto:

((get-string-size ventana) cadena)

+ ventana: ventana creada con open-viewport.+ cadena: cadena de caracteres que se dibujara en la ventana.

Este metodo devuelve una lista con la altura y anchura queocupa la cadena.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 84 / 174

Page 85: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosTexto

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;;Obtenemos el tamano de una cadena en la ventana((get-string-size ventana) ”ESTO ES UN EJEMPLO DE CADENA EN VENTANA”)

;;devuelve (357.0 19.0)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 85 / 174

Page 86: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

2 ComandosApertura y de graficosCreacion y cierre de ventanasPosicionesColoresDibujosTextoPixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 86 / 174

Page 87: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

Apertura de ventanas pixmap:

(open-pixmap nombreVentana ancho alto)

+ nombreVentana: es el nombre que le daremos a la ventana depixmap.

+ ancho: especifica el ancho en pıxeles de la ventana de pixmap.+ alto: especifica el alto en pıxeles de la ventana de pixmap.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 87 / 174

Page 88: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

Cierre:

(close-pixmap nombreVentana)

+ nombreVentana: es el nombre de la ventana de pixmap quequeremos cerrar.

Nota

Con este procedimiento cerramos solo la ventana pixmap queindicamos, es decir, las demas ventanas no sufren cambio alguno.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 88 / 174

Page 89: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

Dibujando en ventanas Pixmap:

(((draw-pixmap-posn nombreFichero [tipo]) ventana )posicion [color])

+ nombreFichero: nombre del fichero que queremos pintar en laventana pixmap.

+ [tipo]: tipo de formato del fichero. Los tipos soportados son:

* ’gif.* ’xbm.* ’xpm.* ’bmp.* ’pict, no esta disponible su uso en sistemas operativos MAC.* ’unknown, que es el tipo por defecto.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 89 / 174

Page 90: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

Dibujando en ventanas Pixmap[continuacion]:

(((draw-pixmap-posn nombreFichero [tipo]) ventana )posicion [color])

+ ventana: ventana pixmap creada con (open-pixmap).+ posicion: objeto de tipo posicion creado con make-posn.+ [color]: se utiliza solo cuando la ventana pixmap es blanca o

negra.

(((draw-pixmap ventana) nombreFichero posicion [color])

+ Esta funcion es equivalente a la anterior, lo unico que tieneespecial, es que muestra una sintaxis mas reducida.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 90 / 174

Page 91: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

Aclaraciones:

Las ventanas pixmap no se muestran por pantalla, con el usode la siguiente funcion podemos mostrar en una ventanacreada con open-viewport el resultado:

+ (copy-viewport ventana2 ventana)+ ventana: ventana creada con (open-pixmap) o ventana pixmap

creada con (open-pixmap.+ ventana2: ventana creada con (open-pixmap) o ventana

pixmap creada con (open-pixmap).+ El objetivo de esta funcion es copiar el contenido de ventana, a

ventana2.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 91 / 174

Page 92: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

Ejemplo

;;Carga y definicion de la ventana como antes;;....;;;; Se crea una ventana pixmap(define ventana2 (open-pixmap ”ejemplo2” horizontal vertical));;dibujamos la imagen a.png((draw-pixmap ventana2) ”a.png” (make-posn 0.0 0.0) ”black”);;copiamos el contenido de una ventana a otra(copy-viewport ventana2 ventana)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 92 / 174

Page 93: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

ComandosPixmap

Ejemplo

Ejemplo imagen cargada como Pixmap

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 93 / 174

Page 94: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandos

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 94 / 174

Page 95: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

3 Otros comandosProdecimientos con el ratonProcedimientos con el teclado

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 95 / 174

Page 96: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s:

(get-mouse-click ventana) y (ready-mouse-click ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se haga clic.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se haga clic y elsegundo devuelve directamente el valor se haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 96 / 174

Page 97: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s:

(get-mouse-click ventana) y (ready-mouse-click ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se haga clic.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se haga clic y elsegundo devuelve directamente el valor se haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 97 / 174

Page 98: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s:

(get-mouse-click ventana) y (ready-mouse-click ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se haga clic.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se haga clic y elsegundo devuelve directamente el valor se haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 98 / 174

Page 99: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s:

(get-mouse-click ventana) y (ready-mouse-click ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se haga clic.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se haga clic y elsegundo devuelve directamente el valor se haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 99 / 174

Page 100: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s:

(get-mouse-click ventana) y (ready-mouse-click ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se haga clic.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se haga clic y elsegundo devuelve directamente el valor se haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 100 / 174

Page 101: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(ready-mouse-release ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un evento asociado al clic, como dejar de hacer clic

(button-down), o hacer clic (button-up).+ Devuelve #f en caso contrario.

Nota

Al igual que con (ready-mouse-click), se comprueba directamentese haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 101 / 174

Page 102: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(ready-mouse-release ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un evento asociado al clic, como dejar de hacer clic

(button-down), o hacer clic (button-up).+ Devuelve #f en caso contrario.

Nota

Al igual que con (ready-mouse-click), se comprueba directamentese haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 102 / 174

Page 103: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(ready-mouse-release ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un evento asociado al clic, como dejar de hacer clic

(button-down), o hacer clic (button-up).+ Devuelve #f en caso contrario.

Nota

Al igual que con (ready-mouse-click), se comprueba directamentese haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 103 / 174

Page 104: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(ready-mouse-release ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un evento asociado al clic, como dejar de hacer clic

(button-down), o hacer clic (button-up).+ Devuelve #f en caso contrario.

Nota

Al igual que con (ready-mouse-click), se comprueba directamentese haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 104 / 174

Page 105: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(ready-mouse-release ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un evento asociado al clic, como dejar de hacer clic

(button-down), o hacer clic (button-up).+ Devuelve #f en caso contrario.

Nota

Al igual que con (ready-mouse-click), se comprueba directamentese haga o no clic.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 105 / 174

Page 106: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 106 / 174

Page 107: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 107 / 174

Page 108: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 108 / 174

Page 109: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 109 / 174

Page 110: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 110 / 174

Page 111: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 111 / 174

Page 112: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 112 / 174

Page 113: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProdecimientos con el raton

Obtencion de clic’s [continuacion]:

(query-mouse-posn ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un objeto de tipo posicion como ya vimos en su

momento, con las coordenadas donde se ha hecho clic+ Devuelve #f en caso contrario.

(left-mouse-click? mouse-click), (middle-mouse-click?mouse-click), (right-mouse-click? mouse-click)

+ mouse-click: descriptor devuelto por (get-mouse-click) o(ready-mouse-click).

+ Devuelve #t si el clic se ha hecho con el boton derecho,medio, izquierdo respectivamente

+ Devuelve #f en caso contrario.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 113 / 174

Page 114: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

3 Otros comandosProdecimientos con el ratonProcedimientos con el teclado

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 114 / 174

Page 115: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado:

(get-key-press ventana) y(ready-key-press ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se pulse una tecla.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se pulse una tecla y elsegundo, devuelve directamente el valor se pulse dicha tecla o no.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 115 / 174

Page 116: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado:

(get-key-press ventana) y(ready-key-press ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se pulse una tecla.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se pulse una tecla y elsegundo, devuelve directamente el valor se pulse dicha tecla o no.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 116 / 174

Page 117: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado:

(get-key-press ventana) y(ready-key-press ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se pulse una tecla.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se pulse una tecla y elsegundo, devuelve directamente el valor se pulse dicha tecla o no.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 117 / 174

Page 118: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado:

(get-key-press ventana) y(ready-key-press ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se pulse una tecla.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se pulse una tecla y elsegundo, devuelve directamente el valor se pulse dicha tecla o no.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 118 / 174

Page 119: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado:

(get-key-press ventana) y(ready-key-press ventana)

+ ventana: ventana creada con open-viewport.+ Devuelve un descriptor en el caso de que se pulse una tecla.+ Devuelve #f en caso contrario.

Nota

La diferencia es que el primero espera a que se pulse una tecla y elsegundo, devuelve directamente el valor se pulse dicha tecla o no.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 119 / 174

Page 120: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado [continuacion]:

(key-value TeclaPulsada)

+ TeclaPulsada: descriptor devuelto por (get-key-press ventana)o (ready-key-press ventana).

+ Devuelve la tecla pulsada.+ Devuelve #f en caso contrario.

Nota

Para mas informacion sobre los posibles valores devueltos miraraquı.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 120 / 174

Page 121: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado [continuacion]:

(key-value TeclaPulsada)

+ TeclaPulsada: descriptor devuelto por (get-key-press ventana)o (ready-key-press ventana).

+ Devuelve la tecla pulsada.+ Devuelve #f en caso contrario.

Nota

Para mas informacion sobre los posibles valores devueltos miraraquı.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 121 / 174

Page 122: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado [continuacion]:

(key-value TeclaPulsada)

+ TeclaPulsada: descriptor devuelto por (get-key-press ventana)o (ready-key-press ventana).

+ Devuelve la tecla pulsada.+ Devuelve #f en caso contrario.

Nota

Para mas informacion sobre los posibles valores devueltos miraraquı.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 122 / 174

Page 123: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado [continuacion]:

(key-value TeclaPulsada)

+ TeclaPulsada: descriptor devuelto por (get-key-press ventana)o (ready-key-press ventana).

+ Devuelve la tecla pulsada.+ Devuelve #f en caso contrario.

Nota

Para mas informacion sobre los posibles valores devueltos miraraquı.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 123 / 174

Page 124: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Otros comandosProcedimientos con el teclado

Obtencion de pulsaciones en teclado [continuacion]:

(key-value TeclaPulsada)

+ TeclaPulsada: descriptor devuelto por (get-key-press ventana)o (ready-key-press ventana).

+ Devuelve la tecla pulsada.+ Devuelve #f en caso contrario.

Nota

Para mas informacion sobre los posibles valores devueltos miraraquı.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 124 / 174

Page 125: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutables

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 125 / 174

Page 126: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesIntroduccion

4 Crear ejecutablesIntroduccion¿Que es necesario?Pasos a seguir

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 126 / 174

Page 127: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesIntroduccion

¿Como crear?

Dos formas de crear ejecutables:

+ Utilizando el comando raco.+ Con ayuda del interprete.

Nota

Solo se explicara la creacion por medio del interprete.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 127 / 174

Page 128: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutables¿Que es necesario?

4 Crear ejecutablesIntroduccion¿Que es necesario?Pasos a seguir

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 128 / 174

Page 129: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutables¿Que es necesario?

Necesitamos

Incluir al inicio de nuestro fichero la siguiente lınea:

+ #lang racket

Seleccionar el siguiente lenguaje:

+ Determine language from source

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 129 / 174

Page 130: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesPasos a seguir

4 Crear ejecutablesIntroduccion¿Que es necesario?Pasos a seguir

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 130 / 174

Page 131: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesPasos a seguir

Paso 1:

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 131 / 174

Page 132: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesPasos a seguir

Paso 2:

Al terminar el paso 1, nos saldra una ventana como lasiguiente:

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 132 / 174

Page 133: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesPasos a seguir

Paso 2 [parte 1/3]:

Seleccionamos donde queremos guardar el fichero .zip con elejecutable

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 133 / 174

Page 134: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesPasos a seguir

Paso 2 [parte 2/3]:

Seleccionamosla portabilidad del ejecutable

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 134 / 174

Page 135: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesPasos a seguir

Paso 2 [parte 3/3]:

Seleccionamos el lenguaje base de compilacion

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 135 / 174

Page 136: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Crear ejecutablesPasos a seguir

Nota

En el caso de que el ejecutable tenga referencias a elementosexternos como por ejemplo imagenes, necesitamos incluirlos en elarchivo .zip a mano, ya que este proceso solo compila el codigo

dejando atras los elementos externos.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 136 / 174

Page 137: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de Hanoi

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 137 / 174

Page 138: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiHistoria

5 Ejemplo: Torres de HanoiHistoriaReglasFormas de ImplementarPseudocodigoComplejidadImplementacion en SchemeResultados

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 138 / 174

Page 139: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiHistoria

¿Que es y quien lo invento?

Las torres de Hanoi es un problema matematico.

Inventado en 1883 por el matematico frances Edouard Lucas.

Edouard Lucas

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 139 / 174

Page 140: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiReglas

5 Ejemplo: Torres de HanoiHistoriaReglasFormas de ImplementarPseudocodigoComplejidadImplementacion en SchemeResultados

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 140 / 174

Page 141: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiReglas

Problema clasico

El objetivo es mover una serie de discos que tienen diferentestamanos de una varilla a otra final.

Limitaciones

Solo se tienen tres varillas disponibles

Un disco de mayor tamano no puede colocarse sobre uno maspequeno.

Solo se puede mover el disco que se encuentre arriba en cadavarilla.

En cada paso solo se permite el movimiento de un disco, esdecir, se prohıbe mover varios discos a la vez.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 141 / 174

Page 142: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiReglas

Ejemplo

Juego real de madera

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 142 / 174

Page 143: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiFormas de Implementar

5 Ejemplo: Torres de HanoiHistoriaReglasFormas de ImplementarPseudocodigoComplejidadImplementacion en SchemeResultados

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 143 / 174

Page 144: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiFormas de Implementar

Hay dos implementaciones:

Implementacion Recursiva.

Implementacion Iterativa.

Nota

Solo se vera la version Recursiva, ya que el ejemplo finalesta preparado con esta implementacion.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 144 / 174

Page 145: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiFormas de Implementar

Hay dos implementaciones:

Implementacion Recursiva.

Implementacion Iterativa.

Nota

Solo se vera la version Recursiva, ya que el ejemplo finalesta preparado con esta implementacion.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 145 / 174

Page 146: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiFormas de Implementar

Hay dos implementaciones:

Implementacion Recursiva.

Implementacion Iterativa.

Nota

Solo se vera la version Recursiva, ya que el ejemplo finalesta preparado con esta implementacion.

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 146 / 174

Page 147: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiPseudocodigo

5 Ejemplo: Torres de HanoiHistoriaReglasFormas de ImplementarPseudocodigoComplejidadImplementacion en SchemeResultados

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 147 / 174

Page 148: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiPseudocodigo

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 148 / 174

Page 149: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiComplejidad

5 Ejemplo: Torres de HanoiHistoriaReglasFormas de ImplementarPseudocodigoComplejidadImplementacion en SchemeResultados

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 149 / 174

Page 150: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiComplejidad

¿Es sencillo?

Aunque no lo parezca es un problema complejo, en el que elnumero de movimientos crece de forma exponencial.

Movimientos para varios discos

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 150 / 174

Page 151: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme

5 Ejemplo: Torres de HanoiHistoriaReglasFormas de ImplementarPseudocodigoComplejidadImplementacion en SchemeResultados

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 151 / 174

Page 152: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (1/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 152 / 174

Page 153: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (2/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 153 / 174

Page 154: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (3/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 154 / 174

Page 155: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (4/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 155 / 174

Page 156: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (5/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 156 / 174

Page 157: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (6/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 157 / 174

Page 158: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (7/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 158 / 174

Page 159: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (8/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 159 / 174

Page 160: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (9/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 160 / 174

Page 161: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (10/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 161 / 174

Page 162: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (11/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 162 / 174

Page 163: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (12/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 163 / 174

Page 164: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (13/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 164 / 174

Page 165: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (14/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 165 / 174

Page 166: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiImplementacion en Scheme: Codigo parte (15/15)

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 166 / 174

Page 167: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiResultados

5 Ejemplo: Torres de HanoiHistoriaReglasFormas de ImplementarPseudocodigoComplejidadImplementacion en SchemeResultados

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 167 / 174

Page 168: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiResultados

Ejemplo

Ventana Inicial

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 168 / 174

Page 169: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Ejemplo: Torres de HanoiResultados

Ejemplo

Ejecuion

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 169 / 174

Page 170: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Referencias

1 Introduccion

2 Comandos

3 Otros comandos

4 Crear ejecutables

5 Ejemplo: Torres de Hanoi

6 Referencias

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 170 / 174

Page 171: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Referencias

Sitios de interes:

Fernandez Garcıa, N. L. (2013)Introduccion al Lenguaje SchemeConsultado el 27 de octubre de 2013

Scheme (s.f.)Obtenido de enciclopedia libre WikipediaConsultado el 27 de octubre de 2013

Departamento de Ciencias de la computacion e inteligenciaartificial de la Universidad de SevillaManual de referencia de SchemeConsultado el 27 de octubre de 2013

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 171 / 174

Page 172: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Referencias

Sitios de interes:

Navas, E. (2010)Programando con Racket 5Consultado el 27 de octubre de 2013

The Racket Reference (Ver.5.3.6.)Graphics: Legacy Library.Consultado el 27 de octubre de 2013

Torres de Hanoi (s.f.)Obtenido de enciclopedia libre WikipediaConsultado el 27 de octubre de 2013

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 172 / 174

Page 173: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Referencias

Sitios de interes:

Ajay (2009)Excel Color Palette and Color Index change using VBAConsultado el 27 de octubre de 2013

The Racket Reference (Ver.5.3.6.)key-event objectsConsultado el 27 de octubre de 2013

The Racket Reference (Ver.5.3.6.)raco exe: Creating Stand-Alone ExecutablesConsultado el 27 de octubre de 2013

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 173 / 174

Page 174: TRABAJO DE TEOR IA - UCO · TRABAJO DE TEOR IA Representaci on Gr a ca en Scheme Asignatura de Programaci on Declarativa Francisco Javier Rodr guez Lozano Escuela Polit ecnica Superior

Programacion Declarativa Representacion Grafica en Scheme

Gracias por su atencion

Universidad de Cordoba 4o Grado Ingenierıa Informatica: Computacion 174 / 174