-->

Menú principal

martes, 12 de diciembre de 2023

Computación y Robótica 2º ESO - Tema 2.- Programación con Processing

 TEMA2.- PROGRAMACIÓN CON PROCESSING


Processing es un lenguaje de programación de código abierto, muy potente que podemos utilizar en multitud de proyectos y precisamente ese es su fuerte, podemos utilizarlo en diferentes modos de programación, desde un modo básico hasta un modo complejo utilizando toda la potencia que nos brinda la orientación a objetos. Se utiliza para la enseñanza de la programación en proyectos multimedia, puede decirse que es un lenguaje para gráficos.

En primer lugar vamos a descargar e instalar esta entorno de programación. Para ello buscamos en el navegador la página principal de Processing.org. Este lenguaje está disponible en Linux, Windows y McOs. Entramos en descargas y bajamos el fichero en formato zip correspondiente a nuestro sistema operativo.

Extraemos los ficheros contenidos en el archivo comprimido .zip en una carpeta situada dentro del directorio "Programación", por ejemplo.
Creamos un acceso directo al fichero ejecutable y lo colocamos en el escritorio para poder ejecutarlo cuando lo necesitemos.


 

¿Qué es Processing?


Processing es un dialecto de Java que fue diseñado para el desarrollo del arte gráfico, para las animaciones y aplicaciones gráficas de todo tipo. Desarrollado por artistas y para artistas. No necesita conexión a Internet y tampoco se programa en los servidores web de sus creadores. Solo es necesario instalarlo en un disco local.

Es una plataforma que integra entorno de desarrollo y lenguaje de programación. Es muy fácil de aprender y solo necesitamos unos minutos para empezar a programar. Es portable en memorias USB, lo cual permite usarlo en cualquier ordenador sin instalarlo.

Otra característica muy importante es la escalabilidad. Podemos combinar Processing con aplicaciones Java, en los dos sentidos, e incluso tenemos la posibilidad de portar nuestros proyectos a la web gracias a Processing.js. Solo necesitamos descargar el JS y a través de la etiqueta canvas de HTML5, hacer referencia a nuestros archivos creados con Processing, muy sencillo.

Processing nos da la posibilidad de generar un ejecutable para las diferentes plaformas Mac OS, Windows o Linux e incluso podemos desarrollar aplicaciones móviles gracias a la SDK que nos ofrecen para Android. También podemos conectar Processing con Arduino.



El entorno de desarrollo de Processing

El entrono de desarrollo es similar a la plataforma Arduino, ya que éste se nutre de Processing. Se llama PDE (Processing Development Enviroment) desarrollado en Java. Es muy sencillo y fácil de usar, ya que es una plataforma plug and play como Arduino.

Vamos a realizar el primer programa con Processin. Para ello vamos a crear una ventana y en su interior vamos a dibujar un punto y una línea. Escribimos el siguiente código:

size (200,200);
point (100, 100);
line (50,50, 150,150);

Ahora vamos a dibujar un cuadrado

size (300,300);
line (50,50,50,150);
line (50,150,150,150);
line (150,150,150,50);

line (150,50,50,50);
  
EJERCICIO 1.- FIGURAS GEOMÉTRICAS: realizar estas figuras:

size (250,250);                                       // Ventana 300x300
background (256,256,120);                // Color de fondo
triangle (20,20,220,20,20,220);      // Dibuja un triángulo
quad (20,20,120,20,120,120,20,120);  // Dibuja un cuadrilátero
rect (120,120, 120,120,20);                     // Dibuja un rectángulo 
fill (120,10,50,150);                                  // Rellena la figura de color
ellipse (70,70,60,60);                              // Dibuja una elipse
fill (120,10,50,150);
ellipse (180,180,60,60);

EJERCICIO 2.- AROS OLÍMPICOS. En esta imagen se muestra el código para obtener los aros olímpicos:

EJERCICIO 3.- CONSTRUIR UN SEMÁFORO: En este vídeo se muestra como realizar el ejercicio del semáforo:

Para realizar el semáforo tenemos que introducir el siguiente código:

int time = millis();                     // Ponemos el crono a cero

void setup() {
  size (400,400);                                        // Creamos una ventana de 400x400 pixeles
  rect(120,20,120,360);                             // Dibujamos un rectángulo
  triangle(20,20,120,20,120,120);             // Triángulo  en la parte superior izquierda
  triangle(240,20,340,20,240,120);           // Triángulo  en la parte superior derecha
  triangle(20,140,120,140,120,240);        // Triángulo  en la parte central izquierda
  triangle(240,140,340,140,240,240);      // Triángulo  en la parte central derecha
  triangle(20,260,120,260,120,350);        // Triángulo  en la parte inferior izquierda
  triangle(240,260,340,260,240,350);      // Triángulo  en la parte inferior derecha
  fill(0,0,0);                                                 // Ponemos el relleno del fondo en negro
  ellipse (180,80,100,100);                        // Dibujamos el círculo superior
  ellipse (180,200,100,100);                      // Dibujamos el círculo central
  ellipse (180,320,100,100);                      // Dibujamos el círculo inferior
}

void draw() {
  int crono  = millis()-time;  // Tiempo transcurrido
  if (crono>0 && crono < 5000) verde();                //Encendido luz verde 5 segundos
  if (crono>5000 && crono < 8000) ambar();        // Encendido luz ambar 3 segundos
  if (crono>8000 && crono < 14000) rojo();         // Encendido luz roja 6 segundo
  if (crono>14000) time=millis();                          // Reiniciamos el tiempo
}

void rojo() {
  fill(255,0,0);
  ellipse (180,80,100,100);
  fill(0,0,0);
  ellipse (180,200,100,100);
  //fill(0,250,0);
  fill(0,0,0);
  ellipse (180,320,100,100);
}

void ambar() {
  fill(0,0,0);
  ellipse (180,80,100,100);
  fill(255,255,0);
  ellipse (180,200,100,100);
  //fill(0,250,0);
  fill(0,0,0);
  ellipse (180,320,100,100);
}

void verde() {
  fill(0,0,0);
  ellipse (180,80,100,100);
  fill(0,0,0);
  ellipse (180,200,100,100);
  //fill(0,250,0);
  fill(0,255,0);
  ellipse (180,320,100,100);
}

El resultado debe ser una ventana donde nos aparece el semáforo dibujado con triángulos, líneas, círculos y rectángulos. Al iniciar se enciende el color verde durante 5 segundos, después se enciende el ámbar durante 3 segundos y se apaga el verde. Y por último se apaga el ámbar y se enciende el rojo durante 6 segundos. Y se vuelve a repetir el ciclo de nuevo.

Empezamos a introducir el código línea a línea:


Dibujamos el triángulo de la parte superior izquierda


 El triángulo de la parte superior izquierda se hace con la instrucción:
triangle(240,20,340,20,240,120);


Los siguientes triángulos corresponden a la parte central del semáforo:

Y dibujamos los triángulos de la parte inferior, completando el dibujo del semáforo:

Ahora tenemos que dibujar los círculos de cada una de las luces del semáforo. Ejecutamos una instrucción fill (0,0,0); para que rellene el fondo de color negro:
Los dos siguientes instrucciones dibujan los círculos correspondientes a las luces del semáforo:

Solo nos queda rellenar cada círculo con el color correspondiente y darle un tiempo apagado y encendido:
Vamos a crear unas llamadas a la función verde en primer lugar para que encienda esta luz durante 5 segundos:
Previamente hemos creado el bloque void draw para dibujar la luz de cada color durante un tiempo.

EJERCICIO 4.- DIBUJAR LA BANDERA DE LA UNIÓN EUROPEA.

En la imagen se muestra una captura del código parcial para obtener la bandera de Europa:

void setup() {
  size(640, 400); / /Creamos la ventana donde irá la bandera de Europa
}

void draw() {
  background(0,0,250);
  fill (255,255,255);
  ellipse(320,200,300,300);
  fill (0,255,255);
  ellipse (320,200,2,2);
  line (320,200,320,30);
  line (320,200,470,200);
  line (320,200,320,350);
  line (320,200,170,200);
  
  fill (255,255,0);
  star(320, 50, 15, 35, 5); //Superior
  star(470, 200, 15, 35, 5);//Derecha
  star(320, 350, 15, 35, 5);//Inferior
  star(170, 200, 15, 35, 5);//Izquierda
  star(450, 125, 15, 35, 5);//1C X=[150*cos(30º)]=130+320=450 Y=150*sen(30)=75-200=125
  star(450, 275, 15, 35, 5);//1C X=[150*cos(30º)]=130+320=450 Y=150*sen(30)=75+200=275
  star(395, 70, 15, 35, 5);//2C X=[150*sin(30º)]=75+320=395 Y=150*cos(30)=130-200=70
  star(395, 330, 15, 35, 5);//2C X=[150*sin(30º)]=75+320=395 Y=150*cos(30)=130+200=330
  star(395, 70, 15, 35, 5);//3C X=[150*sin(30º)]=75+320=395 Y=150*cos(30)=130-200=70
  //star(395, 50, 15, 35, 5);
  //star(450, 255, 15, 35, 5);
  //star(395, 310, 15, 35, 5);
}  


// La función estrella permite crear una estrella de diferentes formas

void star(float x, float y, float radius1, float radius2, int npoints) {
  float angle = TWO_PI / npoints;
  float halfAngle = angle/2.0;
  beginShape();
  for (float a = 0; a < TWO_PI; a += angle) {
    float sx = x + cos(a) * radius2;
    float sy = y + sin(a) * radius2;
    vertex(sx, sy);
    sx = x + cos(a+halfAngle) * radius1;
    sy = y + sin(a+halfAngle) * radius1;
    vertex(sx, sy);
  }
  endShape(CLOSE);
}

lunes, 30 de octubre de 2023

CUESTIONARIO TEMA 2.- ELECTRÓNICA DIGITAL

 CUESTIONARIO TEMA 2.- ELECTRÓNICA DIGITAL

1.- Define el concepto de Álgebra?


2.- ¿Qué es el Álgebra de Boole?


3.-¿Qué es la Lógica Digital?


4.-¿Cuales son los tipos de señales que podemos tener en electrónica? Defínelas


5.-¿Qué es una magnitud analógica? Pon dos ejemplos de magnitudes analógicas


6.-¿Qué es una señal digital?. Pon dos ejemplos de señales digitales


7.-¿Cómo se realiza la transformación de binario a decimal?


8.-¿Cómo se realiza la transformación de digital a binario?


9.-¿Qué es una función lógica?


10.-¿Cuales son las operaciones lógicas básicas?


11.-¿Qué son los sistemas digitales combinacionales?


12.-¿Qué es una tabla de verdad? ¿Para qué se utiliza?


13.-Si una función lógica tiene tres variables, ¿cuantas combinaciones posibles se pueden realizar con los diferentes valores que pueden tomar dichas variables? ¿Y si tiene cuatro variables?


14.- Obtén la tabla de verdad de la siguiente función lógica:

    Z = a(-)*b*c(-) + a(-)*b(-)*c + a(-)*b*c + a*b(-)*c



15.- ¿Qué son las puertas lógicas?


16.- Dibuja los símbolos de las puertas lógicas AND, OR, NOT, XAND, XOR



17.- Dibuja la tabla de verdad y el circuito equivalente de la puerta lógica AND




martes, 3 de octubre de 2023

Computación y Robótica 1ºESO - Tema 1.- Programación con Scratch

 Tema 1.- Programación con Scratch

1.- Introducción al programa SCRATCH
2.- Entorno de Scratch
3.- Tipos de bloques
4.- Primeros pasos con Scratch
5.- Actividades a realizar con Scratch


1.- Introducción al programa SCRATCH

     Scratch es un lenguaje de programación por bloques que permite desarrollar habilidades como el pensamiento computacional, razonamiento lógico, creatividad, e inclusive, desarrollando habilidades artísticas y socioemocionales, y otras competencias tecnológicas para el futuro. Está especialmente diseña para que los niños aprendan a programar desde edades muy tempranas.

    Los bloque se clasifican por grupos y no todos pueden encajar con otros bloques, sino que hay que colocar los que se corresponden. La programación en bloques nos permite aprender la lógica de programación desde niños, mediante el uso de sencillas conexiones en forma de bloques. Cada bloque tiene una instrucción, condición o evento diferente. Para programar el paso a paso de una tarea, se deben de encajar los bloques de forma ordenada y lógica. Al juntarlos encajan como piezas de lego o rompecabezas y se van creando pilas o cadenas secuenciales de bloques, es decir, pequeños programas.

    La programación por bloques tiene también elementos como variables, condicionales, bucles, entre otros. Sin embargo, a diferencia de los lenguajes escritos de programación, los bloques se ordenan en grupos de distintos colores. Por ejemplo, tenemos un grupo para los bloques de movimiento en color azul, otro grupo en color verde para los operadores matemáticos, etc.

Antes de empezar a programar vamos a realizar el siguiente cuestionario:

   

2.- Entorno de Scratch



    Scratch es un entorno de programación visual desarrollado por el Grupo Lifelong Kindergarten del MIT (Instituto de Tecnología de Massachusetts) que está diseñado para enseñar conceptos de programación y pensamiento computacional de una manera accesible y divertida para niños y principiantes. A continuación, te proporciono una descripción detallada del entorno de programación de Scratch:

1. Interfaz de usuario:

   - Scratch presenta una interfaz de usuario amigable y colorida que es atractiva para los niños. La pantalla principal se divide en varias áreas clave:
   
    - Escenario: Aquí es donde se muestra la ejecución del proyecto, lo que permite a los usuarios ver sus animaciones y juegos en acción.
     
     - Área de bloques: Es donde los usuarios crean y ensamblan programas utilizando bloques de código visuales. Los bloques representan acciones y lógica de programación y se pueden arrastrar y soltar en el área de secuencia.
     - Área de secuencia: Aquí es donde se ensamblan los bloques para crear scripts. Los bloques se pueden apilar verticalmente para definir el flujo de ejecución de un proyecto.
     
     - Paleta de bloques: Ofrece una amplia variedad de categorías de bloques, como eventos, movimiento, apariencia, sonido, etc., que los usuarios pueden utilizar para construir programas.

     
     - Área de escenario: Permite a los usuarios agregar personajes, objetos y fondos a su proyecto y luego interactuar con ellos mediante la programación.

2. Personajes y escenarios:

   - Scratch permite a los usuarios crear personajes personalizados y fondos para sus proyectos. Puedes dibujar tus propios personajes o cargar imágenes desde tu computadora. Los personajes pueden tener múltiples disfraces que se pueden cambiar durante la ejecución del programa.
   
3. Programación visual:
   
- En lugar de escribir código de programación en lenguajes de programación tradicionales, Scratch utiliza bloques de código visual que se ensamblan de manera intuitiva. Los bloques están diseñados para ser fáciles de entender y manipular, lo que lo hace ideal para principiantes.
   
4. Secuencia de bloques:
   - Los bloques se pueden colocar en la secuencia para crear programas. Los bloques se ejecutan de arriba a abajo en el orden en que se colocan en la secuencia.
   
5. Eventos:
   
- Scratch se centra en la programación basada en eventos. Los programas pueden responder a eventos como clics de ratón, teclas presionadas o colisiones entre objetos.

6. Sonido y medios:
  
 - Scratch permite a los usuarios agregar sonidos a sus proyectos, grabar sonidos directamente en el programa y utilizar una variedad de efectos de sonido predefinidos.

7. Compartir y colaborar:
   
- Scratch tiene una comunidad en línea donde los usuarios pueden compartir sus proyectos, ver los proyectos de otros, remixar proyectos existentes y colaborar en la creación de proyectos.

8. Plataformas:
   
- Scratch está disponible en línea a través de un navegador web y como una aplicación de escritorio descargable. Además, se puede ejecutar en sistemas operativos Windows, macOS y Linux.

En resumen, Scratch es un entorno de programación visual diseñado específicamente para enseñar programación de manera divertida y accesible. Su interfaz amigable y su comunidad en línea fomentan la creatividad y el aprendizaje colaborativo, lo que lo convierte en una herramienta poderosa para introducir a niños y principiantes en el mundo de la programación y la informática.
Para conocer mejor el entorno de Scratch vamos a realizar las siguientes actividades:

3.- Tipos de bloques


    Scratch utiliza varios tipos de bloques de programación visual que los usuarios pueden ensamblar para crear scripts y proyectos. Estos bloques se organizan en categorías para facilitar su acceso y utilización. A continuación, te proporciono una descripción detallada de los tipos de bloques más comunes que Scratch ofrece:

1. Bloques de Eventos: Estos bloques permiten a los programas responder a eventos específicos, como el inicio del programa, clics de ratón o pulsaciones de teclas. Algunos ejemplos de bloques de eventos son:

   - "Al presionar bandera verde": Inicia el programa cuando se hace clic en la bandera verde.
   - "Cuando se presiona [tecla]": Activa una acción cuando se pulsa una tecla específica.

2. Bloques de Control: Estos bloques controlan la ejecución de los programas al permitir la repetición de acciones o la toma de decisiones. Ejemplos de bloques de control incluyen:

   - "Repetir [n] veces": Ejecuta un conjunto de bloques un número específico de veces.
   - "Si [condición], entonces": Permite tomar decisiones en función de una condición.

3. Bloques de Movimiento: Estos bloques controlan el movimiento de los personajes y objetos en el escenario. Algunos bloques de movimiento son:

   - "Mover [n] pasos": Hace que un objeto se mueva una distancia específica.
   - "Girar [n] grados": Rota un objeto en un ángulo determinado.

4. Bloques de Apariencia: Estos bloques cambian la apariencia de los personajes u objetos en el escenario. Ejemplos de bloques de apariencia incluyen:

   - "Cambiar efecto de [efecto] por [n]": Aplica efectos visuales como desenfoque o brillo.
   - "Cambiar disfraz a [nombre]": Cambia la apariencia del personaje a un disfraz específico.

5. Bloques de Sonido: Estos bloques controlan la reproducción de sonidos en el proyecto. Ejemplos de bloques de sonido son:

   - "Reproducir sonido [sonido]": Reproduce un sonido específico.
   - "Detener todos los sonidos": Detiene la reproducción de todos los sonidos.

6. Bloques de Sensing (Sensores): Estos bloques permiten a los programas detectar eventos o condiciones en el entorno del proyecto. Algunos ejemplos de bloques de sensores son:

   - "Tocando [objeto]": Comprueba si un objeto está tocando a otro.
   - "Detección de color [color]": Detecta si un color específico está bajo un sensor de color.

7. Bloques de Operadores: Estos bloques realizan operaciones matemáticas y lógicas en valores. Ejemplos de bloques de operadores incluyen:

   - "Sumar [n] a [n]": Realiza una suma.
   - "Mayor que [n] > [n]": Comprueba si un valor es mayor que otro.

8. Bloques de Variables: Estos bloques permiten a los usuarios crear y gestionar variables para almacenar datos. Ejemplos de bloques de variables son:

   - "Establecer [variable] a [valor]": Asigna un valor a una variable.
   - "Cambiar [variable] por [n]": Modifica el valor de una variable.

Estos son algunos de los tipos de bloques más comunes en Scratch. La combinación de estos bloques permite a los usuarios crear una amplia variedad de proyectos interactivos, juegos y animaciones de manera visual y divertida. Scratch fomenta el pensamiento lógico y la resolución de problemas a través de la programación sin requerir conocimientos de codificación tradicional.
Para sacarle todo el provecho a este entorno de programación es necesario conocer las herramientas de las que dispone, para ello vamos a realizar estos ejercicios:


Ejercicio 3.-  Clasificar bloques en Scratch
  

Ejercicio 4.- Bloques de sensores en Scratch



4.- Primeros pasos con Scratch


Aquí tienes algunos ejemplos de los primeros pasos de programación con Scratch, adecuados para principiantes:

1. Movimiento Básico:
   - Arrastra un bloque de evento "Al presionar bandera verde" y, a continuación, un bloque de movimiento "Mover [n] pasos" dentro de él.
   - Configura la cantidad de pasos y haz clic en la bandera verde. Verás cómo el personaje se mueve cuando se inicia el programa.

2. Cambio de Apariencia:
   - Agrega un personaje o sprite al escenario desde la biblioteca.
   - Arrastra un bloque de evento "Al presionar bandera verde".
   - Luego, agrega un bloque de apariencia "Cambiar disfraz a [nombre]" para el sprite.
   - Añade un segundo disfraz al sprite desde la biblioteca.
   - Haz clic en la bandera verde para ver cómo cambia la apariencia del sprite.

3. Repetición Simple:
   - Agrega un personaje o sprite al escenario.
   - Usa un bloque de evento "Al presionar bandera verde".
   - Agrega un bloque de control "Repetir [n] veces".
   - Coloca bloques de movimiento dentro del bloque "Repetir" para que se ejecuten varias veces.
   - Cuando hagas clic en la bandera verde, verás cómo se repiten las acciones.

4. Toma de Decisiones:
   - Agrega un sprite y un fondo al escenario.
   - Utiliza un bloque de evento "Al presionar bandera verde".
   - Agrega un bloque de control "Si [condición], entonces" y coloca bloques de movimiento dentro de él.
   - Configura una condición, como "Si el sprite toca el borde".
   - Cuando hagas clic en la bandera verde, el sprite se moverá según la condición establecida.

5. Uso de Sonidos:
   - Agrega un sprite y un bloque de evento "Al presionar bandera verde".
   - Utiliza un bloque de sonido "Reproducir sonido [sonido]" para reproducir un sonido cuando comience el programa.
   - Puedes agregar un bloque de sonido adicional, como "Esperar [n] segundos" antes de reproducir el sonido para un efecto de retardo.

6. Variables Simples:
   - Crea una variable haciendo clic en la pestaña de variables y seleccionando "Crear una variable".
   - Usa un bloque de evento "Al presionar bandera verde" para configurar la variable a un valor inicial.
   - Luego, utiliza bloques de operadores para cambiar y mostrar el valor de la variable en el escenario.

    Estos son ejemplos simples de cómo comenzar a programar con Scratch. Con estos fundamentos, los principiantes pueden construir gradualmente proyectos más complejos y explorar las capacidades avanzadas de Scratch a medida que adquieren experiencia en programación visual. La práctica y la experimentación son claves para aprender y mejorar en Scratch.


Ejercicio 7.- Propiedades de los objetos en Scratch



Ejercicio 9.- Diseño de un programa. Sentido de los bloques de Scratch


5.-Actividades a realizar con Scratch


    Realiza estos ejercicios de la web REA -> Recursos Educativos Abiertos de la Junta de Andalucia.

Ejercicio 10.- Par o impar con Scratch


Ejercicio 11: Adivinar un número aleatorio en un intervalo (ej: entre 1 y 500)


Realiza el código mostrado en la figura y prueba que funciona correctamente.

Ejercicio 12: Dibujar polígonos de n lados con una longitud dada


Este ejercicio tiene varios objetos, el objeto1 es el gato y tiene el código indicado en la figura anterior.
El objeto bola dibuja el polígono al hacer clic sobre él. Su código se muestra en la siguiente figura:

El botón "Longitud+" incrementa la longitud del lado en una unidad, lo mismo para el botón "Longitud-" que disminuye la longitud del polígono. Hay otros dos botones para disminuir o aumentar el número de lados. Intenta replicar el código mostrado en la figuras y prueba el funcionamiento.