1. Observación
Recuerda que todos tus programas deben de tener este patrón:
1
2
3
4
5 void setup() {
Declaración e inicialización de variables
Instrucciones
}
Adapta este patrón para lo que se te pide a continuación.
2. Mostrar resultados en la consola
¿Son las expresiones 1/0, 1.0/0, 1/0.0, 1.0/0.0 válidas en Processing?
Usa la instrucción println()
para ayudarte.
Inclúye el siguiente código en la función principal setup()
y
predice el resultado del programa resultante.
Comenta todas las instrucciones indicando lo que hace cada una.
1
2
3
4
5
6
7
8
9
10
11
12 int a = 2; // Declaro e inicilizo la variable a.
int b = 3; // ¿Qué está pasando?
println(2+3); // Indíca con comentarios las instrucciones.
println(a+b);
println("2+3");
println("a+b");
println("a+b=" + (a+b));
println (a + "+" + b + "=" + (a + b));
println (a + "+" + b + "=" + (2 + 3));
println (a + "+" + b + "=" + a + b);
println (a + "+" + b + "=" + 2 + 3);
Comprueba tu predicción con la salida real tras escribir y ejecutar dicho programa en Processing. ¿Qué está pasando en cada línea? Indícalo con comentarios.
El siguiente programa está incompleto.
1
2
3
4 int a
int b
println("(" + a + b + " = ");
Se quiere hacer un programa que muestre el siguiente texto en la consola:
(a+b)^2=resultado
donde a
y b
son dos números naturales positivos cualesquiera (almacenados en las variables indicadas) y resultado
es el resultado de la expresión \(a^2+2ab+b^2\).
Haz un programa que calcule dicho resultado de tres formas diferentes: (1) utilizando la función sq()
, (2) usando la función pow()
y (3) sin utilizar ninguna de las dos funciones anteriores. Predice cuál de las tres expresiones mostrará un valor numérico real.
En particular muestra el resultado para a=2
y b=4
. Es decir, muestra
(2+4)^2=36
según las 3 formas indicadas.
Escribir el siguiente texto en la consola:
1
2
3 Las soluciones de la ecuación ax^2+bx+c=0 son:
* x = x1
* x = x2
donde x1
y x2
son los valores resultantes de aplicar la expresión
\(\frac{-b\pm \sqrt{b^2-4ac}}{2a}\) que permite calcular las dos raíces
de la ecuación cuadrática general \(ax^2+bx+c=0\).
En particular muestra el resultado para la ecuación \(x^2+x-6=0\).
La nota de un alumno en la asignatura Introducción a la Programación viene dada por los siguientes porcentajes fijos (constantes):
-
30% de la media de dos exámenes parciales,
-
20% en trabajos presentados y participación en clase, y
-
50% en un proyecto de programación,
Define las variables y constantes que consideres necesarias para mostrar no solo la nota final del alumno Santiago Martínez Hernández, sino también sus notas parciales (ya ponderadas) supuesto que las notas obtenidas son valores aleatorios no negativos y no superiores a 10.
3. Dibuja en la ventana gráfica
¿Qué se dibuja en la ventana gráfica? ¿Cuáles son los valores finales de las variables 'x' e 'y'? Usa el modo de depuración de Processing y desarrolla la tabla de seguimiento.
1
2
3
4
5
6
7
8
9
10
11 int lado = 50; // Se puede cambiar el valor.
int x=10; // Un punto
int y=40;
line (x, y, x+lado, y);
x = x + lado;
line (x, y, x-lado, y+lado);
x = x - lado;
y = y + lado;
line (x, y, x, y-lado);
y = y - lado;
Dibuja 3 cuadrados de lados diferentes donde el siguiente cuadrado a dibujar contenga un vértice situado en el centro del cuadrado dibujado anteriormente. Para dibujar los 3 cuadrados solo puedes utilizar las siguientes variables y no está permitido el uso de valores literales:
1
2 int lado1, lado2, lado3; // Los lados de los 3 cuadrados.
int x, y; // el vértice superior izquierdo de un cuadrado.
Solo cuando funcione tu programa, modificalo para que los lados de los cuadrados sean constantes y el vértice superior izquierdo del primer cuadrado sea aleatorio en el rango que consideres.
Dado un punto del plano expresado en coordenadas cartesianas \((x,y)\), éste puede expresarse en coordenadas polares como \((\rho, \theta)\) con \(\rho=\sqrt{x^2+y^2}\) y \(\theta=atan2(y,x)\); recíprocamente, dado el punto del plano en coordenadas polares \((\rho, \theta)\), dicho punto en coordenadas cartesianas es \((\rho cos(\theta), \rho sen(\theta))\).
-
Traza una línea desde el punto (0,0) hasta el punto cartesiano (x,y) en color rojo y un grosor de 5px, según el sistema de coordenadas de Processing. Un punto candidato (x,y), que te puede permitir visualizar correctamente el proceso que tienes que realizar, es el que viene dado por el centro de la ventana gráfica.
-
Traza una línea desde el punto (0,0) hasta el punto cartesiano (x,y), pero expresando este último punto como las coordenadas cartesianas que se obtiene a partir de sus coordenadas polares. La línea se dibujará en color amarillo y un grosor de 2px.
Observa que deben de coincidir.
-
Ahora extiende el programa para que:
-
El punto de origen (0,0) se desplace al centro de la ventana gráfica con las siguientes instrucciones
-
pushMatrix(); translate(width/2, height/2); // todo lo que se ponga aquí tomará como referencia // el punto (width/2, height/2) como el origen de coordenadas popMatriz(); // Todo lo que se ponga antes de pushMatrix() y // todo lo que se pongan después de popoMatrix() // tomará como referencia la esquina superior izquierda // como el origen de coordenadas
+ Mira las referencias de las instrucciones pushMatrix(), popMatrix() y translate() Haz que el punto (x, y) dependa de (mouseX, mouseY), y por tanto que cambie en cada frame. ¿Qué pasa si el punto (x, y) depende de funciones trigonométricas como sin() o cos() y ambas dependientes de una variable que se incrementa en cada frame? Ten en cuenta que estas funciones toman valores entre -1 y 1 por lo que la función map() te puede ser de utilidad.
4. Problemas
Dado el peso de un objeto expresado en gramos y siempre múltiplo de 5, construye un algoritmo para determinar el menor número de pesas que hay que poner en una balanza (con pesos: 5 g, 10 g, 50 g) para equilibrarla. No hay límite de pesas.
-
Define las variables y constantes que consideres necesarias.
-
Haz la traza del algoritmo.