Empecé a utilizar MSWLogo para enseñar programación a alumnos de ESO hace solo un par de años. La razón es que los equipos disponibles en las aulas de Tecnología en las que he tenido la oportunidad de dar clase cuentan con pocos recursos (procesador, memoria RAM, etc.) para los estándares del momento de redactar esta entrada. Sin embargo, al no disponer de otros medios, simplemente me adapté y opté por un lenguaje que aparece en diversos libros de texto, sobre todo asociado al uso de controladoras ENCONOR y CNICE.
En las primeras sesiones, tras enseñar a usar el bucle REPITE n [instrucciones], uno de los aspectos más interesantes a la hora de crear nuestros propios procedimientos es la posibilidad de pasar parámetros al código. Eso permite transformar el habitual primer ejemplo de dibujar un cuadrado de un tamaño dado en algo más dinámico, pudiendo pasar el tamaño del lado a un procedimiento CUADRADO redefinido y al que llamaré CUADRADOL :lado. Veamos el código de ambos procedimientos:
Cuando quise extender esta idea a otras primitivas, como la que define el grosor del cursor usando una lista de parámetros entre corchetes, me tropecé con una dificultad. PONGROSOR [tamaño] se debe escribir poniendo números entre corchetes, si los sustituyes por variables no funciona.
Ejemplo:
pongrosor [10 10] ; Establece el grosor del lápiz en 10, el valor por defecto es 1
pongrosor [:g :g] ; Da error
Este mismo problema surge con otras primitivas como PONCOLORRELLENO [rojo verde azul] o PONPOS [posición]. Revisé el manual que estaba usando: "Manual MSWLOGO abreviado 0809 con hipervínculos.pdf" y busqué en Internet sin éxito otras referencias en las que simplemente no me dijeran que sustituir los números por variables no estaba permitido.
Al final, decidí analizar el problema con más detenimiento y me dí cuenta de que lo que diferenciaba la forma de pasar parámetros a estas primitivas de las otras que ya conocía, era la existencia de los corchetes que los delimitaban. Mirando en la referencia del lenguaje, se puede ver que las listas emplean la misma sintaxis, encerrando entre corchetes los elementos que las forman. Entonces probé a construir una lista y pasarla directamente como parámetro a PONGROSOR y ¡Eureka! ¡Funciona!
Ejemplo:
El siguiente procedimiento recibe como parámetro el grosor de la línea. Los paréntesis que rodean a la primitiva LISTA son opcionales, se han escrito para distinguir con mayor claridad lo que se pasa como parámetros a PONGROSOR.
para cuadradog :grosor
bp
pongrosor (lista :grosor :grosor)
repite 4 [av 100 gd 90]
fin
bp
pongrosor (lista :grosor :grosor)
repite 4 [av 100 gd 90]
fin
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.