Práctica de robótica virtual con OpenRoberta

15 diciembre 2022

Os dejo por aquí esta práctica de un robot buscador hecha en el entorno OpenRoberta

Es un pelín más complejo que otras cosas que os comparto, pero empieza desde una idea sencilla y vamos completando y perfeccionando el proyecto. Uno de los objetivos es ir pasando por las distintas posibilidades tanto del lenguaje de programación como del hardware del robot.

Aunque se pueda usar como un entorno puramente virtual, este entorno está pensado para probar programas que vayan luego sobre robots reales, por lo que su comportamiento es «poco exacto», no te va a girar o a moverse con la precisión de Scratch, sino con la «imprecisión» de un robot real. De esta forma la programación es «realista», lo que le añade un atractivo más.

Agradezco a los creadores de este entorno su trabajo y, por supuesto al INTEF que es quien ha confiado en mí para escribir esta actividad y la comparte en su web.

Anuncio publicitario

Funciones en Python. Iniciación, con ejemplos

29 noviembre 2022

Aquí os dejo, para quien pudiera servir, esta recopilación/resumen sobre funciones en Python

Fundamentalmente pensado para principiantes, estudiantes y profesores que busquen material de apoyo.

El documento tiene licencia Creative Commons para que pueda llegar a todo el mundo pero, sin duda, se agradece el apoyo de quien lo considere oportuno y pueda hacerlo. Aquí os dejo mi ko-fi


Apuntes básicos sobre uso de sensores y arduino

29 noviembre 2022

Aquí os dejo, para quien pueda servir, este resumen de ideas preliminares sobre sensores y su uso básico en arduino.

Fundamentalmente pensado para principiantes, estudiantes y profesores que busquen material de apoyo.

El documento tiene licencia Creative Commons para que pueda llegar a todo el mundo, pero sin duda se agradece el apoyo de quien lo considere oportuno y pueda hacerlo. Aquí os dejo mi ko-fi


Ejercicio de Scratch con VÍDEOS

8 abril 2020

El gato de Scratch

Fuente

Buenas, he preparado unos ejercicios de Scratch que recuerdan un poco a programación que se podría hacer sobre robots físicos, para paliar la incapacidad que tenemos ahora de hacer las prácticas con los que tenemos en el instituto. Podéis hacerlos sin registraros, o registraros y tener la posibilidad de guardar vuestros programas. Esta es su web

Nota: Os recuerdo también mi manual de Scratch que sigue disponible, aunque las imágenes son de la versión anterior, pero se puede usar bien.

Para quien pudiera servir, aquí están.

Como siempre se agradece los comentarios, correcciones, difusión y, en la medida de lo posible, la colaboración. Siempre se agradece un café. 😉

Juntos somos más.

Aquí tenéis los enunciados con los enlaces a los proyectos abiertos, pero sin código para facilitar el trabajo.

Y aquí los vídeos en los que se van haciendo y se explican.

 


Manual de prácticas para Python. Desde CERO.

10 octubre 2019

Texto revisado septiembre 2022

Aquí os dejo un manual de prácticas de Python pensadas para aprender sin tener ningún conocimiento previo.

Pensada para alumnos de bachillerato, pero invitamos a cualquiera que quiera iniciarse a que lo pruebe 😉

Estas cosas que se comparten para el bien de todos tienen un alto coste en tiempo y esfuerzo, así que también se agradece mucho la difusión y aportaciones que queráis hacer. En la imagen se accede a mi cuenta de ko-fi

Y aquí tenéis el manual

Revisión del 2022:

  • Corrección de errores y mejora del texto
  • Incluye la explicación de enumerate()
  • Abrir ficheros con with
  • Referencia al programa para crear exámenes

Importancia del contenido, tiempo dedicado y peso en la nota

9 septiembre 2019

Fuente: Wikipedia

Estas tres cosas: Importancia de un contenido, tiempo/esfuerzo que se le dedica y peso en la evaluación final, son tres elementos que deberían tener una fuerte relación entre ellas y no siempre ocurre así.

En estos comienzos de curso es extremadamente importante que le paséis este «test» a vuestros diseños de asignaturas, de cualquier nivel. ¿Le dedico tiempo suficiente a este contenido que considero tan importante? ¿No es este trabajo demasiado costoso para el peso que tiene en la calificación final?

Es una manera sencilla de repartir tiempos, esfuerzos, partes en exámenes y pruebas.

Hay tendencias que nos apartan de esta sencilla lógica. Por ejemplo, le solemos dedicar mucho tiempo a cosas que son difíciles, aunque sean excepciones, asuntos tangenciales, o no vayan a tener peso en la calificación final.

También es frecuente que nos extendamos en asuntos que nos interesan a los docentes o de los que sabemos más sin tener en cuenta la importancia relativa que puede tener en el contexto de la materia que impartimos.

Además en estos tiempos absurdos (matemática y pedagógicamente) de «estándares», rúbricas y demás formas de atomizar la evaluación, nuestra incoherencia entre estas tres «magnitudes» puede ser detectada por nuestros estudiantes cosa que hace que dejen de pensar en aprender y se vuelvan «calculadores».

Por ejemplo, si les mando leer dos libros y hacer dos trabajos escritos y esto va a ser un punto en la calificación final. ¿No harían mejor en dedicar ese tiempo a estudiar mi materia u otra y sacarme un NUEVE, tranquilamente?

Esta actitud, que nos molesta profundamente a los docentes que queremos enseñar, no sumar decimales, también se minimiza manteniendo las tres cantidades (importancia, tiempo y peso) en un mismo orden, de forma que quien obvia algo poco importante, gana sólo un poco de tiempo y pierde sólo un poco de nota, en cambio quien pretende soslayar algo de importancia crucial, aunque ganará mucho tiempo, no será capaz de pasar la asignatura.

Hazlo una y otra vez. Otro ejemplo, si tienes que confeccionar un examen «final», adscribe porcentajes a los contenidos y limita la participación de cada uno en el conjunto del examen.

No es nada difícil y da muchas alegrías. Que tengáis buen curso.

Por cierto, ¿y si hacemos eso también con el resto de elementos de nuestra vida: buscamos la proporcionalidad entre tiempo, importancia y recompensa (a cualquier nivel)?

Esto, como tantas cosas, lo aprendí de mi hermana Mª Carmen Fernández Panadero, a quien dedico este post.


SPSS y Python, cómo leer y escribir datos

5 septiembre 2019

SPSS es un programa para hacer estadística bastante popular (y propietario, IBM).

Por supuesto tiene muchas funciones de las más comunes integradas y, como en cualquier software, si tienes experiencia no es difícil ir bastante rápido en las tareas más comunes.

El problema es cuando quieres hacer algo no tan común, pero para eso se pueden hacer pequeños «pedazos de código», scripts, en lenguajes como Python y r, siempre que estén instalados los plugins correspondientes.

Me veo en estas cosas por echar un cable (como tantas veces me lo echan a mí). La cuestión es que para calcular el valor de una variable en un registro necesitábamos acceder a otras variables de OTROS registros y hacer algunos bucles. Algo trivial en Python, pero que no acabábamos de ver cómo hacer en SPSS (quizá mi desconocimiento). El caso es que al final, después de unas cuantas vueltas y de consultar en varios sitios, conseguí encontrar la manera de leer una variable, convertirla en una lista (lo que me permite hacer los cálculos en Python que desee) y luego escribir otra lista en la variable que quería calcular.

Quizá os parezca sencillo… pero a mí me hubiera encantado encontrar este post el tiempo que anduve buscando, así que lo escribo.


BEGIN PROGRAM.

import spss                                #cabecera
spss.StartDataStep()
datasetObj = spss.Dataset()
numColumnaVar1=0               
#aquí tienes que poner el número de la columna en la que está cada variable, empezando a contar por 0
numColumnaVar2=1
numColumnaVarResultado=2
var1=[]                               
#inicializamos los arrays vacíos para luego usar el método append e ir rellenando
var2=[]
varResultado=[]
for i in range(len(datasetObj.cases)):               
#leemos ambas variables (los índices empiezan en cero)
    var1.append(datasetObj.cases[i,numeroColumnaVar1][0])   
#cases lee como si fuera un vector de un componente, así que al poner [0] elegimos el primer elemento
    var2.append(datasetObj.cases[i,numeroColumnaVar2][0])    

AQUÍ HACEMOS EN PYTHON LO QUE QUERAMOS CON LAS LISTAS QUE HEMOS CREADO var1, var2, etc.

FINALIZAMOS SUBIENDO LOS VALORES A LA VARIABLE VACÍA EN LA TERCERA COLUMNA QUE HABREMOS CREADO A MANO EN SPSS

#escribo la variable en la tabla usando el varResultado
for i in range(len(datasetObj.cases)):                   
#i es un índice que recorrerá todos los registros
    datasetObj.cases[i,numerocolumnaVarResultado]=varResultado[i]            
spss.EndDataStep()                    #finalización
END PROGRAM.

Del código que ves escrito sólo tienes que tocar los números de columna origen y destino, recordando que empieza la cuenta en cero.

numColumnaVar1=0                
numColumnaVar2=1
numColumnaVarResultado=2
Por supuesto, tendrás que repetir el código si quieres «tomar» más variables de la base de datos o si quieres al final escribir más variables como resultado.
Paso a explicaros el código paso a paso.
Todo el código está encapsulado entre las instrucciones BEGIN PROGRAM. y END PROGRAM.
«Cabecera»
import spss                                
spss.StartDataStep()
datasetObj = spss.Dataset()
Con estas instrucciones conseguimos que Python pueda tratar el conjunto de datos como un objeto, con sus correspondientes atributos (propiedades) y métodos (funciones), que serán las que usemos para extraer los valores, primero ,y subirlos, después.
Identificación de variables por columna
numColumnaVar1=0                
numColumnaVar2=1
numColumnaVarResultado=2
Usamos estas variables numéricas para luego decirle al programa de qué variables de SPSS tiene que leer los datos y en cuál escribirlos. Ojo en esta última, porque, si te equivocas, vas a sobreescribir una variable en la que podrías tener datos. Asegúrate de que está vacía y de elegir bien los números ANTES de ejecutar el código.
Lectura de datos.
for i in range(len(datasetObj.cases)):                
    var1.append(datasetObj.cases[i,numeroColumnaVar1][0]) 
Hacemos un bucle con tantas iteraciones como longitud (len) tenga la base de datos.
Añadimos cada lectura en una posición de la lista que habíamos creado para ello (var1).
Importante el [0] del final, porque cada lectura la toma como un lista, aunque sólo tenga un componente. Al añadir esto, le decimos que lea el valor de la variable i (lo tomará como lista), que elija el primer valor de esa lista de números, que sólo tiene uno (!) (el número [0]) y que lo guarde como elemento i de nuestra lista, la var1.
Si no pusiéramos que cogiera sólo un elemento nos quedaría un vector de vectores: var1= ([35],[22],[17]…)
Cuando ya tenemos las variables en Python, ya tenemos toda la libertad y facilidad que nos da programar en un lenguaje tan versátil.
Subir datos
Después de haber hecho todas las perrerías que quieras en Python, sólo te queda subir los datos que has ido añadiendo a varResultado.
Como definimos varResultado como un array vacío, en tu código acuérdate de llenarla usando el método append. Si esto te viene mal o te da problemas, inicia el array dando valores.
for i in range(len(datasetObj.cases)):                   
    datasetObj.cases[i,numerocolumnaVarResultado]=varResultado[i]
Así que hacemos un bucle en el que vamos escribiendo en cada registro (hasta completar la longitud de la base de datos) los valores calculados, en la columna elegida al principio. No tiene por qué ser sólo una variable, podéis subir tantos resultados como deseéis.
OJO DE NUEVO, que si escribís esto en una variable en la que ya tengáis datos, los perderéis.
Cerrando
spss.EndDataStep()                    #finalización
END PROGRAM.
Con esto se completa el script.
Es un código muy simple, también se pueden crear y dar formato a las variables desde Python, pero creo que un usuario básico de SPSS hace eso con la gorra y meter esto por aquí os haría más lío.
Como lo más probable es que no tengáis que crear un conjunto grande de variables, estamos hablando de que tardáis un minuto. Si necesitas automatizarlo, porque sean muchas, considera hacerlo desde Python o desde r.
El detalle de todo esto y muchas más cosas podéis encontrarlas aquí en la Python Reference Guide for IBM SPSS Statistics
Lo nuestro está en la página 55 y siguientes.
Espero que os sirva.
Juntos somos más.

Manual de Scratch. Especial para Profes y Principiantes.

2 abril 2018

Aquí os dejo el manual de Scratch que he preparado, explicando las funcionalidades con ejemplos, partiendo desde cero y haciendo cosas bastante sofisticadas. Creo que es muy buen trabajo tanto si lo usáis para aprender, como si se lo dejáis a vuestros alumnos, o si lo leéis para tomar ideas como formadores.

Se comparte con Licencia Creative Commons de atribución, no comercial y sin obra derivada.

Estoy muy a favor de compartir mi trabajo y de que quien no tenga recursos suficientes pueda acceder a material de calidad (una alegría y por eso se publica), por otra parte, tampoco hay nada malo que a quien le parezca pueda hacer una contribución de la cuantía que os parezca, para ayudar y compensar el trabajo que lleva… que ya os digo que no es poco.

Estaré encantado de escuchar vuestros comentarios y sugerencias, tampoco dudéis en contactar conmigo para cualquier problema que os surja.

Y muchas gracias a Teresa por su ayuda 😉

 


A %d blogueros les gusta esto: