Resumen: Entrega nº38 del curso "Programación para niños de 10 a 16 años (primaria o secundaria)".
Codificación aprenderaprogramar.com: PN00538G

 

 

DIBUJANDO CIRCUNFERENCIAS

¡Hola amigos! Presentamos aquí una nueva entrega del curso de programación para niños de aprenderaprogramar.com. En anteriores entregas hemos usado la instrucción repetir para ejecutar un código repetidas veces, haciendo cambiar el valor de una variable en cada repetición para dibujar una circunferencia. ¿Podemos mejorar nuestro código? 

didac-prog cartesia aprender programacion niños

 

Esta entrega la catalogamos como de programación avanzada. Por tanto no es recomendada para primaria sino sólo para secundaria.

Esta entrega está dirigida a mayores de 12 años. Si tienes menos edad, sáltala.

 

DIBUJAR UNA CIRCUNFERENCIA DE UN RADIO CUALQUIERA

En una entrega anterior vimos cómo dibujar una circunferencia con centro en el origen de coordenadas y radio 4 usando este código.

-- EJEMPLO EJERCICIO RESUELTO PN00537G-3 DIBUJAR CÍRCULO paso 3

Iniciar programa

Nuevo color lápiz (1)

Nuevo grosor lápiz (2)

x nuevo valor es (-4)

Repetir (32) veces ejecutar bloque

Comienzo bloque

Dibujar línea desde (x,sqr(16-x*x)) hasta (x+0.25, sqr(16-(x+0.25)*(x+0.25)))

Dibujar línea desde (x,-sqr(16-x*x)) hasta (x+0.25, -sqr(16-(x+0.25)*(x+0.25)))

x nuevo valor es (x+0.25)

Fin bloque

Finalizar programa

 

 

La fórmula que se usa en este código la explicamos en una entrega anterior, y puede escribirse como:

x*x + y*y = r*r, o también puede escribirse como y = raíz cuadrada de (r2 – x2) ó y = sqr (r2 – x2).

Pero este código dibuja un círculo de radio 4 (vemos que aparece que para un valor de x, el valor de y que le corresponde es (42 – x*x) que es (16 – x2)

¿Y si quisiéramos dibujar un círculo de radio 3? Tendríamos que sustituir 16 por 9 que es tres elevado al cuadrado. ¿Y si quisiéramos dibujar un círculo de radio 5? Tendríamos que sustituir 16 por 25 que es cinco elevado al cuadrado. Para evitar tener que estar reemplazando el 16 allá donde aparezca, podemos definir una variable de entre las disponibles en Cartesia, que recordamos son x, y, a, b, c, d, e. Vamos a coger la letra “e” como correspondiente a nuestro radio. Ahora el programa podemos escribirlo así:

-- EJEMPLO EJERCICIO RESUELTO PN00538G-0 DIBUJAR CÍRCULO paso 0

Iniciar programa

Nuevo color lápiz (1)

Nuevo grosor lápiz (2)

e nuevo valor es (4)

x nuevo valor es (-e)

Repetir (32) veces ejecutar bloque

Comienzo bloque

Dibujar línea desde (x,sqr(e*e-x*x)) hasta (x+0.25, sqr(e*e-(x+0.25)*(x+0.25)))

Dibujar línea desde (x,-sqr(e*e-x*x)) hasta (x+0.25, -sqr(e*e-(x+0.25)*(x+0.25)))

x nuevo valor es (x+0.25)

Fin bloque

Finalizar programa

 

 

Lo que hemos hecho es introducir la variable e con un valor inicial que en este ejemplo es 4, y allí donde aparecía el 4 hemos escrito la letra e. El resultado de este código es el mismo que el anterior: se dibuja un círculo de radio 4.

Aplicación para la enseñanza visual de la programación Didac-Prog Cartesia adolescentes secundaria

 

Pero tenemos la ventaja de que ahora es muy fácil dibujar un círculo de otro radio. Basta con cambiar el valor de e en la línea << e nuevo valor es (4) >> reemplazando el 4 por el valor de radio que queramos. Cámbialo por otros valores como 3, 2, 1 ó 5, 10, 15 y comprueba lo que sucede. ¿Qué observas? Nos encontramos con que para valores mayores de 4, el círculo no se completa.

Para qué sirven las variables en programación explicado para niños y adolescentes

 

¿Por qué ocurre esto? Porque el número de líneas que se dibujan para completar el círculo depende del número de repeticiones establecido. Este número lo habíamos fijado en 32 porque tomando valores de x que en cada repetición se incrementan en 0.25 unidades, que es 1/4 unidades, tenemos 4 líneas a dibujar por cada unidad de x para ir completando el círculo, porque 0.25 + 0.25 + 0.25 + 0.25 = 1. En el círculo de radio 4, partimos de x = - 4 y llegamos a x = 4 y entre estos dos valores de x hay 8 unidades, como podemos ver contando sobre el dibujo. Para 8 unidades de x y 4 líneas por cada unidad salen 8*4 = 32 repeticiones. En realidad dibujamos 64 líneas, porque en cada repetición dentro del bucle tenemos dos instrucciones dibujar línea (así vamos dibujando “por arriba” y “por debajo” al mismo tiempo). Al tener 32 repeticiones * 2 líneas en cada repetición = 64 líneas dibujamos en total para el círculo de radio 4.

Si el círculo es de radio 3 los valores de x van de -3 a 3 y comprenden 6 unidades, con lo que nos basta con 6*4 = 24 repeticiones.

Si establecemos e=3 y mantenemos 32 repeticiones, el círculo se va dibujando y queda completado cuando se alcanzan las 32 repeticiones. En la siguiente repetición, se intenta dibujar usando el valor de x = 3.25 pero como hay que calcular la raíz cuadrada de (3*3 – 3.25*3.25) y esta sale negativa, eso genera un error y en el panel de mensajes nos aparece lo siguiente:

ERROR: revise su código. Referencia: comando Dibujar línea. Error en valores numéricos. Posible división por cero u operación ilegal. Por favor revise el código.

 

 

Este mensaje se debe al intento de calcular la raíz negativa. Si intentas calcular la raíz de un número negativo con una calculadora comprobarás que te sale un mensaje de error. No se puede calcular.

Sin embargo, esto ocurre después de haberse ejecutado las 24 repeticiones y de haberse dibujado la circunferencia, por lo cual podemos ver el círculo dibujado en la pantalla como si la ejecución hubiera sido correcta (aunque no lo ha sido totalmente). Es decir, Cartesia empieza a ejecutar los programas y llega allí hasta donde puede. Cuando salta un error se detiene, pero es posible que ya se haya dibujado algo en la pantalla, como en este caso.

Si el círculo es de radio 7 los valores de x van de -7 a 7 y comprenden 14 unidades, con lo que necesitaríamos 14 * 4 = 56 repeticiones.

Por eso si establecemos e = 7 veremos que el círculo no se dibuja completo, porque nos faltan repeticiones para poder completar el círculo.

 

REEMPLAZAR VALORES POR VARIABLES

En general es preferible expresarlo todo en función de variables para evitar tener que estar modificando el código dentro de nuestro programa cada vez que queremos cambiar algo como el radio del círculo o el número de repeticiones. Por eso podemos decir que las repeticiones serán tantas como el número de unidades de x que tengamos que recorrer multiplicado por 4 si usamos un incremento de x de 0.25. Si el incremento de x fuera de 0.5 sería multiplicado por 2.

El número de unidades de x a recorrer para un círculo, por ejemplo de radio 4, va desde -4 hasta 4, lo que supone (4 + 4) unidades: 8 unidades.

Para un radio cualquiera el número de unidades a recorrer sería (radio + radio)*4, que para radio 4 resulta 8*4=32, para radio 3 resulta 6*4=24 y para radio 7 resulta 14*7=56.

Por ello modificaremos la línea << Repetir (32) veces ejecutar bloque >> para que quede de la siguiente manera: << Repetir ((e+e)*4) veces ejecutar bloque >>. Como la e representa el radio, para radio 4 nos salen (4+4)*4 = 8*4 = 32 repeticiones.

Para radio 3 nos sale (3+3)*4 = 6*4 = 24 repeticiones.

Para radio 7 nos sale (7+7)*4 = 14*4 = 56 repeticiones.

Establece valores para el radio desde pequeños hasta grandes. Por ejemplo si usas << e nuevo valor es (15)>> seguramente una parte del círculo, o todo él, queden fuera del área visible, y en el panel de mensajes se mostrará el mensaje “El dibujo o parte del dibujo puede estar fuera del área visible”.

Hay una cosa interesante aquí: decimos que tenemos en cada unidad 4 valores de x porque en 1 ud de x caben 4 veces 0.25 ó 1/4 que es lo mismo.

¿Y si en lugar de incremento 0.25 usáramos incremento 0.5 que es 1/2? El número de repeticiones en cada unidad sería 1/0.5 = 1 / (1/2) = 2

¿Y si en lugar de incremento 0.25 usáramos incremento 1/8 que es 0.125?. El número de repeticiones en cada unidad sería 8 que es 1 / (1/8)

Podemos decir que el número de repeticiones será (radio + radio) * (1 / incremento establecido). Por ejemplo para radio 3 con incremento de 0.25 que es 1/4 resulta (3+3) * (1 / (1/4)) = 6 * 4 = 24

 

EXPRESARLO TODO CON VARIABLES

En el código que tenemos planteado dibujamos líneas entre puntos que tienen coordenadas (x, y), y en cada ocasión incrementamos el valor de x en 0.25 unidades. Por ejemplo tomamos -4, -3.75, -3.5, -3.25, -3 etc. y así vamos creando los puntos (-4, 0) (-3.75, 1.39) (-3.5, 1.93) (-3.25, 2.33) (-3, 2.64) y así sucesivamente.

Para tenerlo todo expresado con variables, el incremento de x vamos a designarlo con la letra “a” de modo que también podamos modificarlo fácilmente cuando nos interese.

En la línea << Repetir ((e+e)*4) veces ejecutar bloque >> el valor 4 resultaba de 1/0.25 = 1/(1/4) porque estábamos usando incrementos de 0.25

Podemos establecer el valor del incremento usando la variable a para representar el incremento en el valor de la variable x en cada repetición así:           a nuevo valor es (1/4)

Para un incremento a nos queda esa línea así: << Repetir ((e+e)*(1/a)) veces ejecutar bloque >>

El código queda así:

-- EJEMPLO EJERCICIO RESUELTO PN00538G-1 DIBUJAR CÍRCULO paso 1

Iniciar programa

Nuevo color lápiz (1)

Nuevo grosor lápiz (2)

e nuevo valor es (4)

x nuevo valor es (-e)

a nuevo valor es (1/2)

Repetir ((e+e)*(1/a)) veces ejecutar bloque

Comienzo bloque

Dibujar línea desde (x,sqr(e*e-x*x)) hasta (x+a, sqr(e*e-(x+a)*(x+a)))

Dibujar línea desde (x,-sqr(e*e-x*x)) hasta (x+a, -sqr(e*e-(x+a)*(x+a)))

x nuevo valor es (x+a)

Fin bloque

Finalizar programa

 

 

Haz pruebas modificando el código y comprueba los resultados. Por ejemplo:

- Modifica el color con que se dibuja la circunferencia.

- Modifica el radio.

- Modifica el incremento que se usa para la variable x en cada repetición (este incremento lo hemos representado con la variable “a”).

- Utiliza potencias en lugar de multiplicaciones y comprueba que el resultado es el mismo. Por ejemplo en lugar de e*e usa e^2. Hay ocho multiplicaciones de este tipo, por tanto podrás usar ocho potencias reemplazando a las multiplicaciones.

 

EJERCICIO

Crear un programa para dibujar una parábola cuya ecuación es y = x2 – b, usando repeticiones para unir líneas entre puntos de la parábola. b será una variable que establecerás inicialmente a un valor de por ejemplo 3.  Usa lápiz de grosor intermedio y color verde. En cada repetición debes incrementar el valor de x en a unidades, siendo a una variable que establecerás inicialmente a un valor como por ejemplo 0.25.

Te voy a dar algunas pistas.

Pista 1: debes elegir un valor de x inicial. Para elegirlo, dibuja primero la parábola sobre un papel cuadriculado y viendo las coordenadas que tiene Didac-Prog Cartesia en la pantalla, elige un valor de x de modo que la y quede dentro del panel de dibujo, o próximo al panel de dibujo.

Pista 2: en cada repetición el punto inicial tendrá que ser (x, x*x -b). Esto también se puede escribir como (x, x^2 - b ). Para obtener el punto final de la línea incrementa el valor de x en c unidades y ten cuidado con los paréntesis.

Pista 3: tienes que elegir un número de repeticiones. Puedes calcularlo. Por ejemplo, si vas a ir de -6 a -5 te hacen falta (1/a) repeticiones. Si a vale 0.25 y partimos de x= - 6 se usan como valores de x -6, -5.75, -5.5, -5.25. Para ir de -6 a -4 te harían falta 8 repeticiones. Y así sucesivamente. También puedes ir probando repeticiones hasta que se dibuje bien.

Pista 4: en cada repetición tienes que incrementar el valor de x, no lo olvides.

Pista 5: el programa no debería ocuparte más de 20 líneas de código.

Pista 6: el resultado a obtener depende de los valores de a y de b que utilices. Por ejemplo para a = (1/4) y b = 3, debe ser parecido a la siguiente imagen.

Ejercicios resueltos de programación visual para niños con aplicación didáctica Didac-Prog Cartesia
 

Puedes comprobar si tus respuestas son correctas consultando en los foros aprenderaprogramar.com.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.

Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

 

Descargar archivo: