Está en la página 1de 44

Visin general del curso

Tarea 3: Circuito de carreras


Prctica nal: Directrices
Ordenacin

Programacin, Creatividad y Resolucin de


Problemas con Scratch:
Sesin 3: Circuito de Coches / Directrices para la
prctica nal
Jos F. Quesada
CICA: Centro de Informtica Cientca de Andaluca

Grupo de Investigacin en Lgica, Lenguaje e Informacin


Grupo de Investigacin en Sistemas de Dilogo Hablado y Multimodal
Departamento de Ciencias de la Computacin e Inteligencia Articial

Universidad de Sevilla

Coordinador del Proyecto de Formacin a Distancia

Sociedad Andaluza
de Educacin
Matemtica Thales
Jos F. Quesada
Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Objetivos y Agenda de la Sesin

Visin general del curso


Corrreccin de la tarea 3

Carrera innita: El circuito de carreras

Prctica nal
Directrices

Un buen ejemplo: el problema de la ordenacin

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Visin general del curso

Programacin, Creatividad y Resolucin de Problemas con


Scratch
El curso se estructura en torno a dos pilares bsicos:
Conocer una tecnologa: Scratch como entorno de
programacin visual
Pero a pesar del inters que una tecnologa nos pueda
despertar, la tecnologa en s misma tiene graves limitaciones.
Por tanto, nos interesa disear y modelar una metodologa

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Metodologa

La metodologa utilizada como base en el curso se basa en tres


nociones clave:
Programacin: necesitamos conocer los conceptos y tcnicas
de ciencias de la computacin.
Resolucin de problemas: aprender a programar un ordenador
implica un importante ingrediente de aprendizaje de tcnicas
de resolucin de problemas.
Creatividad: no se trata de reproducir sistemticamente
patrones, sino de obtener mecanismos para generar nuevas
soluciones a nuevos (o viejos) problemas.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Estructura del curso


Consecuentemente, el curso se ha estructurado de la siguiente
forma:
Un conjunto de 6 entregas (estructuradas en 3 mdulos) que
abordan los fundamentos clave de la tecnologa que tenemos
que usar: Scratch
Cada una de las entregas lleva asociada una tarea pensada
para practicar y profundizar en los conocimientos y tcnicas
especcas.
Un conjunto de 3 retos que abordan los tres pilares de la
metodologa.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Por qu creatividad en el contexto de la


programacin?

Ken Robinson, al hablar de la creatividad, cita 4 pilares bsicos:


1
2
3
4

El elemento
La pasin
La disciplina (esfuerzo)
El riesgo: entre el fracaso y el xito

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Por qu creatividad en el contexto de la


programacin?

El conocimiento del componente tcnico, el lenguaje de


programacin y las estrategias y tcnicas, as como las
estructuras de datos, representa el componente relacionado
con la disciplina y el esfuerzo.
Para poder ser creativos en un mbito es necesario dominar
adecuadamente la tecnologa de dicha disciplina

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Programacin

Esta parte es la correspondiente al pilar denominado


Programacin dentro de la estructura del curso:
Estructuras de control: secuencial, condicionales, iteraciones
Operadores: lgicos, aritmticos
Estructuras de datos: nmeros, cadenas de texto, listas, ...
Variables
Mensajes
Sincronizacin
...

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Resolucin de problemas
Aplicamos la tcnica para resolver problemas
Y en este sentido, es importante aprender a resolver problemas
Una metodologa adecuada es clave para estructurar el
proceso, lo que abarca
Desde un planteamiento inicial del problema: entendiendo el
propio problema, sus requisitos operativos, condicionantes, etc.
Pasando por el diseo de una solucin y su implementacin
como un programa
Hasta la comprobacin sistemtica de que la solucin
propuesta realmente es correcta
Incluyendo otros anlisis como complejidad algortmica,
completitud, mantenibilidad, etc.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Resolucin de problemas y Creatividad

La resolucin de problemas progresa mediante modelos de


abstraccin o incluso meta-cognicin
Ahora bien, asumiendo un enfoque didctico o pedaggico,
hemos de plantearnos tambin los condicionantes que supone
la enseanza de la programacin y la resolucin de problemas
Podemos caer en el grave error de ensear soluciones antes
que plantear problemas
Y por otro lado, es importante dejar margen a la creatividad

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3: Circuito de carreras

Actividad 1: Dibujar un circuito como fondo del escenario


1
2

Idea clave: los colores van a delimitar las zonas del circuito.
Detectaremos que el coche se sale del circuito haciendo que
los lmites tengan siempre el mismo color (por ejemplo, negro).
El control de vueltas se realizar utilizando una zona especial
del circuito con un color diferente (por ejemplo, verde).

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 1: Fondo del escenario

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 1: Fondo del escenario

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 2: Incluir un coche que se mueve


(Versin 1)
En la primera versin de esta actividad, simplemente
introducimos un nuevo objeto (utilizando la imagen de un
coche) de la librera de imgenes disponibles.
Al iniciarse el programa, se sita el objeto en la posicin de
partida, y de forma indenida, desplazamos el coche y
controlamos si ha chocado
Se introduce un script para cada una de las teclas de echa,
que cambia la direccin de giro del objeto.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 2: Incluir un coche que se mueve


(Versin 1)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 2: Incluir un coche que se mueve (Error)

Para organizar mejor el programa, decidimos separar en dos


scripts diferentes el sistema de movimiento y el control de
choques.
Sin embargo, si no tenemos cuidado, esto nos puede provocar
un problema: intenta averiguar por qu?

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 2: Incluir un coche que se mueve (Error)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 2: Incluir un coche que se mueve (Error)


Explicacin del error: Lo que ocurre es que cuando el coche
choca, todo se queda detenido.
Al pulsar la bandera verde a continuacin, hay dos scripts que
se activarn inmediatamente. El primero de ellos, desplaza el
cochec hasta la posicin de partida y comienza con el
movimiento. El segundo script est atento a un nuevo posible
choque con la zona negra que delimita el circuito.
Estamos predispuestos a pensar que primero se ejecutar el
primer script que llevar el coche hasta la posicin de partida.
Pero puesto que ambos script responden inmediatamente a la
pulsacin de la bandera verde. Qu ocurre si el segundo script
comienza a ejecutarse justo en el mismo instante de la
pulsacin? En ese momento, el coche an sigue tocando el
borde negro, as que todo se vuelve a detener.
Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 2: Incluir un coche que se mueve


(Solucin)
La segunda versin de esta actividad corrige el error detectado.
Ahora tenemos un script que se encarga de detectar la
pulsacin de la bandera verde. Cuando esto sucede, desplaza el
coche a la posicin de salida. A continuacin enva un mensaje
(Carrera) que comunica que se puede iniciar la carrera.
Tanto el script de desplazamiento (movimiento constante)
como el de deteccin del choque se activan al recibir el
mensaje, y no al pulsar la bandera. De esta forma, nos
aseguramos que el coche est bien posicionado antes de
iniciarse la carrera.
Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 2: Incluir un coche que se mueve


(Versin 2)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 3: Control de la velocidad (Versin 1)

Lo primero que debemos hacer es aadir una variable nueva


(velocidad).
Al iniciarse el programa, ponemos su valor a 0
Adems, necesitamos dos scripts que detecten la pulsacin de
las teclas correspondientes para acelerar (aumentar la
velocidad) o frenar (disminuirla).
Por otro lado, un choque supone poner automticamente la
velocidad a cero de nuevo.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 3: Control de la velocidad (Versin 1)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 3: Control de la velocidad (Versin 1)

Pero esta versin presenta varios problemas


En primer lugar, podemos frenar tanto que terminemos
generando un valor negativo para la velocidad
En segundo lugar, es posible que tras un choque, el coche se
quede tocando permanentemente el borde negro aunque lo
giremos, por lo cual no podremos reiniciar la marcha y se
quedar bloqueado

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 3: Control de la velocidad (Versin 2)

Para resolver los problemas anteriores, haremos que la tecla de


frenado solo reduzca una unidad el valor de la velocidad si sta
es mayor que 0
En segundo lugar, iremos recordando la ltima posicin
correcta antes de chocar. Cuando se produzca un choque
detendremos el coche (haciendo que velocidad sea igual a 0), y
regresaremos a la ltima posicin antes del choque, lo que
provoca una sensacin similar a un rebote.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 3: Control de la velocidad (Versin 2)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 4: Contador de vueltas (Versin 1)


Necesitamos crear una variable nueva, que vaya contando el
nmero de vueltas que se van dando.
Al iniciarse el programa, una vez completada la fase de
inicializacin del coche, mediante un mensaje activamos el
script que va a controlar el nmero de vueltas.
Al activarse este script, ponemos a cero el contador de vueltas.
Puesto que el coche tiene que pasar por la lnea de meta, y no
queremos que cuente como una vuelta la primera vez que
pasa, lo podemos controlar usando dos instrucciones esperar
hasta que ...

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 4: Contador de vueltas (Versin 1)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 4: Contador de vueltas (Versin 1)

Pero esta primera versin presenta un grave problema.


Mientras el coche est cruzando la meta (franja color verde),
como el sistema es tan rpido, provocar que el nmero de
vueltas aumente rpidamente.
Entre las soluciones iniciales que se nos pueden ocurrir para
este problema est el esperar un nmero determinado de
segundos. No obstante esto no es totalmente correcto: qu
ocurrira si el coche se queda detenido exactamente encima de
la franja de la meta?

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Tarea 3 / Actividad 4: Contador de vueltas (Versin 2)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Prctica nal: Objetivos


El principal objetivo de esta prctica es realizar un trabajo
personal que permita aplicar los conocimientos y tcnicas
aprendidos durante el curso a un mbito de inters especco
para cada participante.
En este sentido, el enfoque y contenido de la prctica est
bastante abierto a los intereses particulares de cada
participante.
En segundo lugar, se trata de crear un proyecto con Scracth
que sirva como aplicacin y descripcin del objetivo de la
prctica.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Ordenacin
Este ejemplo puede servir para ilustrar tanto el enfoque del
curso como el planteamiento de una prctica.
Ordenar cosas es una tarea habitual en nuestra vida cotidiana.
Hay mltiples ejemplos en los que podemos o necesitamos
ordenar colecciones de objetos:
Si tenemos un conjunto de monedas y queremos saber el
dinero total que tenemos o queremos pagar una compra,
ordenamos las monedas en subconjuntos de monedas iguales.
Es ms fcil hacer la compra si tenemos una lista ordenada de
los productos que necesitamos (usando el mismo criterio que
usa un diccionario para ordenar las palabras y luego facilitar su
bsqueda)

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Ordenacin
Nuestro problema o prctica consistir en ensear a una clase
de nias y nios a crear un programa que permita ordenar una
lista de elementos.
Y es muy importante: no queremos darle la solucin.
Queremos que sean capaces de ir generando progresivamente
una solucin al problema.
Casi con seguridad, irn descubriendo estrategias parciales, y lo
que queremos es que vayan generalizando progresivamente
esas estrategias.
Adicionalmente, les enfrentaremos con cuestiones vinculadas al
problema y les propondremos que analicen crticamente las
soluciones que van proponiendo y busquen mejores
alternativas.
Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Descripcin grca del problema: Ejemplo de la baraja

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Descripcin grca del problema: Ejemplo de la baraja

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Descripcin grca del problema: Ejemplo de la baraja

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Descripcin grca del problema: Ejemplo de la baraja

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Descripcin grca del problema: Ejemplo de la baraja

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Descripcin grca del problema: Ejemplo de la baraja

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Descripcin grca del problema: Ejemplo de la baraja

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Estrategia de ordenacin: Descripcin informal

Dado un conjunto de cartas (objetos que queremos ordenar)


Seleccionamos el primero (lo colocamos en la casilla de
ordenacin)

Lo comparamos con el segundo: si el elemento en la casilla es


menor, lo dejamos tal cual, y si no lo intercambiamos
Continuamos haciendo las comparaciones (e intercambios si
son necesarios) con el resto de elementos

A continuacin hacemos la misma operacin con el segundo


elemento y as sucesivamente hasta llegar al ltimo

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Estrategia de ordenacin: Descripcin formal

Datos de entrada: Una lista de elementos. Cada elemento

tendr un atributo a partir del cual lo queremos ordenar (por


ejemplo un nmero). El conjunto tendr una longitud (la
cantidad de elementos).
Datos de salida: Una lista con los mismos elementos, pero
ordenados. Segn el criterio seleccionado, sern ordenados de
mayor a menor o de manor a mayor.

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Algoritmo de ordenacin
Data: L: Lista de elementos de longitud N
Result: L: Lista de elementos ordenada
for i = 1 to N do
for j = i + 1 to N do
if L(i ) > L(j ) then
aux L(i );
L(i ) L(j );
L(j ) aux;

end
end
end
Algorithm 1: Algoritmo de ordenacin: Mtodo de la burbuja
Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Ordenacin: Algortmica

Cunto tiempo necesitaremos para ordenar una lista


cualquiera?
Podemos expresar ese tiempo en funcin de algn parmetro?
Podemos hacer que el algoritmo sea ms rpido de alguna
forma?

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

Visin general del curso


Tarea 3: Circuito de carreras
Prctica nal: Directrices
Ordenacin

Directrices generales de la prctica

Plantear un problema: lo ms cercano posible al rea de


conocimiento de cada participante
Describir cmo se planteara dicho problema a una clase
objetivo
Proponer una estrategia didctica para abordar el estudio del
problema de una forma lo ms simple posible
Disear un conjunto de proyectos en Scratch que proponen
soluciones progresivas al problema planteado

Jos F. Quesada

Programacin, Creatividad y Resolucin de Problemas con

También podría gustarte