-->

Menú principal

miércoles, 21 de diciembre de 2022

Diseño de una nave industrial con el programa OpenSCAD en 3D

 El programa OpenSCAD es un software para crear objetos CAD 3D sólidos.

Es un software gratuito y está disponible para Linux/UNIX, MS Windows y Mac OS X. En su página web dispone de amplios tutoriales, bibliotecas, libros, trucos, etc. Utiliza una serie de instrucciones para realizar las diferentes figuras en 3D. Lo mejor es empezar a practicar y ver su funcionamiento.
    El resultado que queremos obtener es una nave con cercha tipo Prat de 20 metros de longitud, seis pórticos separados 5 metros entre ellos y también vamos a dibujar las zapatas y la vigas de atado. Obtendremos una nave industrial similar a la que se muestra en la siguiente imagen:

    Para diseñar la nave industrial con cercha tipo Prat vamos a empezar dibujando los pilares del primer pórtico, para ello introducimos el primer comando que nos va a dibujar el pilar izquierdo, de esta forma:

cube ([20,20,600]);   

Con este comando obtenemos el primer pilar de seis metros de altura y de sección cuadrada de 20 cm de lado, situado en el origen de coordenadas.
    Procedemos a dibujar el pilar derecho situado a 20 metros de distancia con el comando:

translate ([2000,0,0]) cube ([20,20,600]);

Para ellos desplazamos el punto donde se va colocar el pilar mediante el comando "translate" y obtenmos el siguiente resultado al presionar el botón "Previsualizar":

    Ahora tenemos que dibujar el cordón inferior de la cercha, que será un larguero que une los dos pilares por su parte superior. Utilizamos el comando:

translate ([0,0,600]) cube ([2020,20,20]);

    Trasladamos el punto donde vamos a dibujar el larguero a la parte superior del primer pilar, y se verá:

    Ahora tenemos que dibujar el cordón superior, pero primero vamos a dibujar el montante central con una altura de 3 metros situado sobre el centro del cordón inferior, con el siguiente comando:

translate ([1000,0,600]) cube ([20,20,300]);

    Para ellos movemos el punto de arranque a 10 metros del eje X y a 6 metros en el eje Z, el resultado es:

    Ahora vamos a dibujar la parte izquierda del cordón superior con el siguiente comando:

translate ([0,0,600]) rotate([0,-16,0]) cube ([1055,20,20]);

    Hemos tenido que incorporar la sentencia rotate para girar el perfil 16 grados sobre el eje Y en sentido contrario a las agujas del reloj. La longitud del perfil nos da 10,55 metros. El resultado es:

    Ahora procedemos a dibujar la parte derecha del cordón superior, con el comando:

translate ([2020,0,620]) rotate([0,-164,0]) cube ([1055,20,20]);

    Para ello nos desplazamos a la parte superior del pilar derecho, y giramos 164º en sentido contrario a las agujas del reloj sobre el eje Y, obteniendo el siguiente resultado:

    Como vemos la cercha va tomando forma, ahora hay que dibujar los montantes y las diagonales.
//Primer montante izquierda
translate ([333,0,600]) cube ([20,20,110]);


//Segundo montante izquierda
translate ([666,0,600]) cube ([20,20,210]);


//Tercer montante derecha
translate ([1333,0,600]) cube ([20,20,210]);


//Cuarto montante derecha
translate ([1666,0,600]) cube ([20,20,110]);


Ahora dibujamos las diagonales que faltan, para ellos utilizamos los siguientes comandos:
//Primera diagonal izquierda
translate ([1020,0,620]) rotate([0,-151,0])cube ([380,20,20]);
//Primera diagonal derecha
translate ([1000,0,600]) rotate([0,-28,0])cube ([390,20,20]);
//Segunda diagonal izquierda
translate ([680,0,630]) rotate([0,-167,0])cube ([340,20,20]);
//Segunda diagonal derecha
translate ([1350,0,613]) rotate([0,-14,0])cube ([340,20,20]);


    Ahora tenemos que dibujar el segundo pórtico separado a cinco metros de distancia en el eje Y. Son las mismas instrucciones, solo tenemos que cambiar la coordenada Y a 500 en todos los comandos "translate".

//2º cercha
translate([0,500,0]) cube ([20,20,600]);
translate ([2000,500,0]) cube ([20,20,600]);
translate ([0,500,600]) cube ([2020,20,20]);
translate ([1000,500,600]) cube ([20,20,300]);
translate ([0,500,600]) rotate([0,-16,0]) cube ([1055,20,20]);
translate ([2020,500,620]) rotate([0,-164,0]) cube ([1055,20,20]);
translate ([333,500,600]) cube ([20,20,110]);
translate ([666,500,600]) cube ([20,20,210]);
translate ([1333,500,600]) cube ([20,20,210]);
translate ([1666,500,600]) cube ([20,20,110]);
translate ([1020,500,620]) rotate([0,-151,0]) cube ([380,20,20]);
translate ([1000,500,600]) rotate([0,-28,0]) cube ([390,20,20]);
translate ([680,500,630]) rotate([0,-167,0]) cube ([340,20,20]);
translate ([1350,500,613]) rotate([0,-14,0]) cube ([340,20,20]);


    Dibujamos el tercer pórtico cambiando la coordenada Y del comando "translate" a 1000 en todos:

//3º cercha
translate([0,1000,0]) cube ([20,20,600]);
translate ([2000,1000,0]) cube ([20,20,600]);
translate ([0,1000,600]) cube ([2020,20,20]);
translate ([1000,1000,600]) cube ([20,20,300]);
translate ([0,1000,600]) rotate([0,-16,0])cube ([1055,20,20]);
translate ([2020,1000,620]) rotate([0,-164,0])cube ([1055,20,20]);
translate ([333,1000,600]) cube ([20,20,110]);
translate ([666,1000,600]) cube ([20,20,210]);
translate ([1333,1000,600]) cube ([20,20,210]);
translate ([1666,1000,600]) cube ([20,20,110]);
translate ([1020,1000,620]) rotate([0,-151,0])cube ([380,20,20]);
translate ([1000,1000,600]) rotate([0,-28,0])cube ([390,20,20]);
translate ([680,1000,630]) rotate([0,-167,0])cube ([340,20,20]);
translate ([1350,1000,613]) rotate([0,-14,0])cube ([340,20,20]);


//4º cercha
translate([0,1500,0]) cube ([20,20,600]);
translate ([2000,1500,0]) cube ([20,20,600]);
translate ([0,1500,600]) cube ([2020,20,20]);
translate ([1000,1500,600]) cube ([20,20,300]);
translate ([0,1500,600]) rotate([0,-16,0])cube ([1055,20,20]);
translate ([2020,1500,620]) rotate([0,-164,0])cube ([1055,20,20]);
translate ([333,1500,600]) cube ([20,20,110]);
translate ([666,1500,600]) cube ([20,20,210]);
translate ([1333,1500,600]) cube ([20,20,210]);
translate ([1666,1500,600]) cube ([20,20,110]);
translate ([1020,1500,620]) rotate([0,-151,0])cube ([380,20,20]);
translate ([1000,1500,600]) rotate([0,-28,0])cube ([390,20,20]);
translate ([680,1500,630]) rotate([0,-167,0])cube ([340,20,20]);
translate ([1350,1500,613]) rotate([0,-14,0])cube ([340,20,20]);


//5º cercha
translate([0,2000,0]) cube ([20,20,600]);
translate ([2000,2000,0]) cube ([20,20,600]);
translate ([0,2000,600]) cube ([2020,20,20]);
translate ([1000,2000,600]) cube ([20,20,300]);
translate ([0,2000,600]) rotate([0,-16,0])cube ([1055,20,20]);
translate ([2020,2000,620]) rotate([0,-164,0])cube ([1055,20,20]);
translate ([333,2000,600]) cube ([20,20,110]);
translate ([666,2000,600]) cube ([20,20,210]);
translate ([1333,2000,600]) cube ([20,20,210]);
translate ([1666,2000,600]) cube ([20,20,110]);
translate ([1020,2000,620]) rotate([0,-151,0])cube ([380,20,20]);
translate ([1000,2000,600]) rotate([0,-28,0])cube ([390,20,20]);
translate ([680,2000,630]) rotate([0,-167,0])cube ([340,20,20]);
translate ([1350,2000,613]) rotate([0,-14,0])cube ([340,20,20]);


//6º cercha
translate([0,2500,0]) cube ([20,20,600]);
translate ([2000,2500,0]) cube ([20,20,600]);
translate ([0,2500,600]) cube ([2020,20,20]);
translate ([1000,2500,600]) cube ([20,20,300]);
translate ([0,2500,600]) rotate([0,-16,0])cube ([1055,20,20]);
translate ([2020,2500,620]) rotate([0,-164,0])cube ([1055,20,20]);
translate ([333,2500,600]) cube ([20,20,110]);
translate ([666,2500,600]) cube ([20,20,210]);
translate ([1333,2500,600]) cube ([20,20,210]);
translate ([1666,2500,600]) cube ([20,20,110]);
translate ([1020,2500,620]) rotate([0,-151,0])cube ([380,20,20]);
translate ([1000,2500,600]) rotate([0,-28,0])cube ([390,20,20]);
translate ([680,2500,630]) rotate([0,-167,0])cube ([340,20,20]);
translate ([1350,2500,613]) rotate([0,-14,0])cube ([340,20,20]);


    Ahora tenemos que dibujar las vigas de arriostramiento de los pórticos con los comandos:

//Vigas de arriostramiento
translate([0,0,600]) cube([20,2500,20]);
translate([2000,0,600]) cube([20,2500,20]);


    Ahora tenemos que dibujar las zapatas sobre las que se apoyan los pilares. Comenzamos por la parte izquierda de la nave con los siguientes comandos:

//Zapatas izquierda
translate([-50,-50,-60]) cube([120,120,60]);
translate([-50,450,-60]) cube([120,120,60]);
translate([-50,950,-60]) cube([120,120,60]);
translate([-50,1450,-60]) cube([120,120,60]);
translate([-50,1950,-60]) cube([120,120,60]);
translate([-50,2450,-60]) cube([120,120,60]);


//Zapatas derecha
translate([1950,-50,-60]) cube([120,120,60]);
translate([1950,450,-60]) cube([120,120,60]);
translate([1950,950,-60]) cube([120,120,60]);
translate([1950,1450,-60]) cube([120,120,60]);
translate([1950,1950,-60]) cube([120,120,60]);
translate([1950,2450,-60]) cube([120,120,60]);


    Continuamos con las vigas de atados de las zapatas de la parte izquierda:

//Vigas de atado de zapatas izquierda
translate([0,0,-30]) cube([30,500,30]);
translate([0,500,-30]) cube([30,500,30]);
translate([0,1000,-30]) cube([30,500,30]);
translate([0,1500,-30]) cube([30,500,30]);
translate([0,2000,-30]) cube([30,500,30]);


//Vigas de atado de zapatas derecha
translate([2000,0,-30]) cube([30,500,30]);
translate([2000,500,-30]) cube([30,500,30]);
translate([2000,1000,-30]) cube([30,500,30]);
translate([2000,1500,-30]) cube([30,500,30]);
translate([2000,2000,-30]) cube([30,500,30]);


    Ahora tenemos que dibujar los pilares del pórtico frontal con sus zapatas y sus vigas de atado:

//Pilares pórtico frontal
translate ([666,0,0]) cube ([20,20,600]);
translate ([1333,0,0]) cube ([20,20,600]);
//Zapatas pilares pórtico frontales
translate([615,-50,-60]) cube([120,120,60]);
translate([1280,-50,-60]) cube([120,120,60]);
//Vigas de atado zapatas frontales
translate([0,0,-30]) cube([660,30,30]);
translate([660,0,-30]) cube([660,30,30]);
translate([1330,0,-30]) cube([660,30,30]);


    Hacemos lo mismo con el pórtico trasero:

//Pilares traseros
translate ([666,2500,0]) cube ([20,20,600]);
translate ([1333,2500,0]) cube ([20,20,600]);
//Zapatas pilares traseros
translate([615,2450,-60]) cube([120,120,60]);
translate([1280,2450,-60]) cube([120,120,60]);
//Vigas de atado traseras
translate([0,2500,-30]) cube([660,30,30]);
translate([660,2500,-30]) cube([660,30,30]);
translate([1330,2500,-30]) cube([660,30,30]);


    Ahora tenemos que dibujar las placas de asiento de los pilares sobre las zapatas. Comenzamos por la del primer pilar de la izquierda y lo vemos en detalle:

//Placas de asiento
translate([-15,-15,0]) cube([50,50,3]);
translate([-15,485,0]) cube([50,50,3]);
translate([-15,985,0]) cube([50,50,3]);
translate([-15,1485,0]) cube([50,50,3]);
translate([-15,1985,0]) cube([50,50,3]);
translate([-15,2485,0]) cube([50,50,3]);
translate([650,2485,0]) cube([50,50,3]);
translate([1317,2485,0]) cube([50,50,3]);
translate([1985,2485,0]) cube([50,50,3]);
translate([1985,1985,0]) cube([50,50,3]);
translate([1985,1485,0]) cube([50,50,3]);
translate([1985,985,0]) cube([50,50,3]);
translate([1985,485,0]) cube([50,50,3]);
translate([1985,-15,0]) cube([50,50,3]);
translate([1317,-15,0]) cube([50,50,3]);
translate([650,-15,0]) cube([50,50,3]);


    El ejercicio continua dibujando el resto de las placas de asiento y sus correspondientes rigidizadores. También tenemos que añadir las correas, un forjado a 4 metros de altura para oficinas y sus escaleras.


PARAMETRIZACIÓN Y OPTIMIZACIÓN DEL CÓDIGO

    Este ejemplo utiliza demasiadas líneas de código. Para reducir el código vamos a parametrizar los valores de la geometría de la nave, lo cual nos permitirá aumentar o reducir la luz o longitud de la cercha, de los pilares, el ángulo de inclinación del cordón superior, el número de pórticos, etc.
    Este programa es una maravilla ya que con pocas líneas de código podemos generar objetos tridimensionales de gran realismo y poder verlos desde cualquier posición, girando o aumentando el punto de vista de una forma sencilla con un solo movimiento del ratón o el teclado.
    OpenSCAD es un programa especialmente diseñado para programadores y diseñadores en 3D. Si a esto sumamos la pasión por el diseño de estructuras metálicas, de madera o de hormigón, esto nos permitirá hacer vistosos diseños en 3D de grandes y originales estructuras, que luego pueden ser calculadas en programas especializados de cálculo y diseño de estructuras como CYPE.
    Vamos a generar una nave industrial utilizando código parametrizado u reducido para ver como obtenemos el mismo resultado que en el caso anterior con muchas menos líneas de código. Utilizaremos las siguientes variables para usarlas como parámetros de los comandos de OpenSCAD:

a=150;                                     // Ancho perfil
b=150;                                     // Largo perfil
h=7000;                                   // Altura de pilares
luz=24000;                              // Luz del pórtico
nv=6;                                       // Número de vanos
av=1100;                                 // Ancho de la celosía
alfa=10;                                  // Ángulo cordón superior
lcs=(luz/2+a/3)/cos(alfa);       // Longitud cordón superior
lmc=(luz/2)*sin(alfa);            // Longitud montante central
lv=luz/nv;                               // Longitud de cada vano
hv=lv/cos(alfa)*sin(alfa);      // Avance vertical de cada cordón
np=6;                                      // Número de pórticos
sp=5000;                                // Separación entre pórticos
lgt=np*sp;                             // Longitud total de la nave

    La modificación de alguno de estos parámetros hace que la nave se redibuje y tome la nueva forma según los valores introducidos. El siguiente código optimizado nos permitirá dibujar cada uno de los pórticos utilizando el mismo código para todas las cerchas o celosías. Para ello utilizamos la función "for":

for (i=[0:sp:lgt]) {
  translate([0,i,0]) cube([a,b,h+av]); //pilar izquierdo
  translate([luz,i,0]) cube([a,b,h+av]); //pilar derecho
  translate([0,i,h]) cube([luz+a,a,b]); //Cordón inferior
  translate([luz/2,i,h+a/2]) cube([a,b,lmc+av-a/4]); //Montante central
  translate([a/4,i,h+av-a/4]) rotate ([0,-alfa,0]) cube([lcs,a,b]); //Cordón superior izquierda
  translate([luz/2+a/2,i,h+av+lmc]) rotate ([0,alfa,0]) cube([lcs,a,b]); //Cordón superior derecha
  translate([luz/nv,i,h]) rotate ([0,0,0]) cube([a,b,av+hv]); //Primer montante izquierda
  translate([luz/nv*2,i,h]) rotate ([0,0,0]) cube([a,b,av+2*hv]); //segundo montante izquierda
  translate([luz/nv*4,i,h]) rotate ([0,0,0]) cube([a,b,av+2*hv]); //Primer montante derecha
  translate([luz/nv*5,i,h]) rotate ([0,0,0]) cube([a,b,av+hv]); //Segundo montante derecha
  ld1=sqrt(av ^ 2+lv ^ 2); //longitud de la diagonal
  ad1=atan((lv+a)/(av-a)); //angulo de la diagonal
  if (av>200) {    
    translate([luz/nv+a/2,i,h+a/4]) rotate ([0,-ad1,0]) cube([a,b,ld1]); //primera diagonal izquierda
   }
  ld2=sqrt(lv ^ 2+(av+hv-a/2) ^ 2); //longitud de la diagonal
  ad2=atan((lv+a)/(av+hv-a/2)); //angulo de la diagonal
  translate([luz/nv*2+a/2,i,h+a/2]) rotate ([0,-ad2,0]) cube([a,b,ld2]); //segunda diagonal izquierda
  ld3=sqrt(lv ^ 2+(av+2*hv-a/2) ^ 2); //longitud de la diagonal
  ad3=atan((lv+a/2)/(av+2*hv-a/2)); //angulo de la diagonal
  translate([luz/2+a/4,i,h+a/2]) rotate ([0,-ad3,0]) cube([a,b,ld3]); //tercera diagonal izquierda
  translate([luz/2,i,h+a]) rotate ([0,ad3,0]) cube([a,b,ld3]); //primera diagonal derecha
  translate([luz/nv*4,i,h+a]) rotate ([0,ad2,0]) cube([a,b,ld2]); //segunda diagonal derecha
  if (av>200) { 
    translate([luz/nv*5,i,h+a]) rotate ([0,ad1,0]) cube([a,b,ld1]); //tercera diagonal derecha
  }
}

    El resultado obtenido es una nave con celosía tipo Prat y 7 pórticos:


    Podemos ocultar el editor, las líneas de comando y las botoneras, para mostrar el diseño obtenido a pantalla completa, o también exportar a una imagen, a pdf o a formatos compatibles con impresoras 3D, como stl, 3mf, amf, etc.

    Modificamos los valores de algunos parámetros para obtener una cercha sin ancho lateral. Modificamos la longitud de la celosía a 30 m, la altura de pilares a 8 m y el ancho de los perfiles tubulares cuadrados a 20x20 cm. Parametrizamos también la separación entre pórticos, obteniendo el siguiente resultado:

a=200; //ancho perfil
b=200; //largo perfil
h=8000; //altura de pilares
luz=30000; //Luz del pórtico
nv=6; // Número de vanos
av=100; //ancho de la celosía
alfa=15; //ángulo cordón superior
lcs=(luz/2+a/3)/cos(alfa); //longitud cordón superior
lmc=(luz/2)*sin(alfa); //longitud montante central
lv=luz/nv; //longitud de cada vano
hv=lv/cos(alfa)*sin(alfa); //avance vertical de cada cordón
np=6; //número de pórticos
sp=6000; // Separación entre pórticos en mm
lgt=np*sp; //longitud total de la nave



    Ahora tenemos que añadir las vigas de arriostramiento entre pórticos. Mediante el siguiente código obtenemos el resultado de la figura:

//Vigas de arriostramiento
translate([0,0,h]) cube([a,lgt,b]);
translate([luz,0,h]) cube([a,lgt,b]);
if (av>200) {    
 translate([0,0,h+av]) cube([a,lgt,b]);
 translate([luz,0,h+av]) cube([a,lgt,b]);
 for (k=[1:2:2*np]) {
  translate([0,k*(sp/2),h]) cube([a,b,av]);
  translate([luz,k*(sp/2),h]) cube([a,b,av]);
  fi=atan((sp/2)/(av-a/2)); // Ángulo diagonales laterales
  ldl=sqrt(av ^ 2+(sp/2) ^ 2); //Longitud diagonal lateral
  translate([luz,k*(sp/2),h+a]) rotate ([-fi,0,0]) cube([a,b,ldl]); //2ª Diagonal lateral derecha
  translate([luz,k*(sp/2),h+a/2]) rotate ([130-fi,0,0]) cube([a,b,ldl-a]); //1ª Diagonal lateral derecha
  translate([0,k*(sp/2),h+a/2]) rotate ([130-fi,0,0]) cube([a,b,ldl-a]); //1ª Diagonal lateral izquierda   
  translate([0,k*(sp/2),h+a]) rotate ([-fi,0,0]) cube([a,b,ldl]); //2ª Diagonal lateral izquierda   
  }   
 }


    Vamos a dibujar ahora las zapatas de ambos lados de pilares mediante el código mostrado. Para ello parametrizamos el ancho, largo y profundidad de las zapatas, que serán todas iguales en este diseño:

//Zapatas

az=1600; //Ancho de zapata
lz=1600; //Largo de zapata
alz=1000; //Alto de zapata
for (n=[1:sp:lgt+sp]) {
 translate([-az/2,n-lz/2,-alz]) cube([az,lz,alz]);
 translate([luz-az/2,n-lz/2,-alz]) cube([az,lz,alz]);   
}


    A continuación dibujamos las vigas de atado de zapatas:

//Vigas de atado de zapatas
ava=400; //Ancho vigas de atado
lva=400; //Alto vigas de atado
for (n=[1:sp:lgt]) {
  translate([-ava/2,n,-ava]) cube([ava,sp,lva]);
  translate([luz-ava/2,n,-ava]) cube([ava,sp,lva]);
}



jueves, 10 de noviembre de 2022

Tecnología 4º ESO. Cuestionario del tema 2.- Programación

 


TECNOLOGÍA 4º CURSO ESO


CUESTIONARIO TEMA 2.- PROGRAMACIÓN


1.- Define el concepto de Programa informático



2.- ¿Qué son los lenguajes de programación textuales?. Pon algunos ejemplos



3.- ¿Qué son los lenguajes de programación gráficos?. Pon algunos ejemplos



4.- ¿Qué es un algoritmo?



5.-¡Qué son los diagramas de flujo? ¿Para qué se usan los diagramas de flujo?



6.- Realiza el diagrama de flujo de un algoritmo para resolver una ecuación de 2º.



7.-¿Qué es Processing? ¿Cuales son sus características?



8.- ¿Qué instrucción se usa en procesing para crear un cuadrado? Pon un ejemplos



9.- ¿Dónde se encuentra el origen de coordenadas en la ventana de Processing?



10.-¿Con que instrucción crearías un ventana de 600x400 pixeles en Processing?



11.- ¿Para qué sirven las instrucciones de Processing Background y Stroke?



12.- ¿Quién es conocido como el padre de la Computadoras?


13.- ¿Quién fue la primera programadora que desarrollo un algoritmo para la máquina analítica de Babbage?


14.- ¿Cuál es el método para resolver problemas de lógica que recurre solamente a los valores binarios 1 y 0 y a tres operadores AND(y), OR(o) y NOT (no).?


15.- ¿Cómo se llama el lenguaje de bajo nivel que usa instrucciones básicas para programar circuitos integrados, microcontroladores, etc.?


16.- Menciona al menos cuatro lenguajes de programación de alto nivel:


17.- Al código escrito por uno o varios programadores, que es entendido por el ser humano, pero no lo entienden las máquinas, se le llama:


18.- El proceso encargado de traducir un programa informático escrito en código fuente a programa en código máquina es: 


19.- Los lenguajes de programación que son fáciles de aprender porque se usan palabras o comandos del lenguaje natural, generalmente del inglés, son:


20.- La programación en la que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurren en el sistema, definidos por el usuario o que ellos mismos provoquen (ej, pulsación de una tecla, del ratón, etc.), se llama:


21.- El lenguaje donde cada instrucción se ejecuta independiente, es traducida a código máquina y si hay algún error el programa se detiene en esa instrucción, es un:


22.- Una serie ordenada y finita de instrucciones, pasos o procesos que llevan a la solución de un determinado problema, y que es parte de un programa, se llama:


23.- Una forma de escribir la secuencia de pasos que va a realizar un programa o algoritmo, de la manera más cercana al lenguaje de programación que vamos a utilizar posteriormente, es:


24.- Una representación esquemática de los distintos pasos de un programa, que constituye otra forma de representar algoritmos, es:


25.- Escribe en cuatro pasos cómo dibujarías un cuadrado en el entorno de programación de Processing o de Xlogo:


26.-  Los espacios de la memoria del ordenador donde se guardan los valores que se van a utilizar durante la ejecución del programa se llaman:


27.- Al conjunto de instrucciones agrupadas bajo un mismo nombre, que realizan una tarea, pueden recibir parámetros y retornar un valor, se le llama:


28.- La secuencia que ejecuta repetidas veces un grupo de instrucciones de código, hasta que se cumple la condición asignada a un determinado valor deja de cumplirse, se llama:



Descargar el fichero con el siguiente enlace:

https://educacionadistancia.juntadeandalucia.es/centros/malaga/pluginfile.php/658224/mod_assign/introattachment/0/Cuestionario-Tema2_Programaci%C3%B3n.odt?forcedownload=1

martes, 8 de noviembre de 2022

Computación y Robótica 3º ESO - Tema 1.- Introducción a la programación

 Tema 1.- Introducción a la programación

Índice

1.- Introducción
2.- Conceptos básicos de programación
   2.1.- Definición de algoritmo
   2.2.- Lenguaje pseudocódigo
   2.3.- Análisis de problemas
   2.4.- Diagramas de flujo
3.- Lenguajes de programación
   3.1.- Tipos de lenguajes de programación
   3.2.- Lenguaje SCRATCH
4.- Introducción al programa SCRATCH
   4.1.- Entorno de Scratch
   4.2.- Tipos de bloques
   4.3.- Primeros pasos con Scratch
   4.4.- Actividades a realizar con Scratch


1.- INTRODUCCIÓN

    Hoy día es de vital importancia conocer el funcionamiento de las nuevas tecnologías de la información y la comunicación. La mayoría de las profesiones y trabajos requieren el uso de ordenadores y conocer aplicaciones informáticas para realizar las tareas de una forma más eficaz y rápida.
    Saber programar es una habilidad que es cada día más importante. La expertos en educación consideran que las habilidades de programación serán tan importantes como la habilidad de hablar otros idiomas. Por ello en muchos países se está fomentando que los alumnos/as aprendan a programar desde una edad temprana.

2.- CONCEPTOS BÁSICOS DE PROGRAMACIÓN

Lenguaje de programación es el idioma utilizado para controlar el comportamiento de una máquina, particularmente un ordenador. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.

Lenguajes de bajos nivel: están enfocados a un microprocesador de un ordenador concreto. Ejemplos de lenguaje de bajo nivel: assembler

Lenguaje de medio nivel: Es un tipo de programación que se encuentra entre los lenguajes de bajo nivel y los de alto nivel. Un ejemplo es el lenguaje C, que permite acceder al hardware.

Lenguajes de alto nivel: están más próximos al lenguajes humano que al lenguaje de la máquina. Ejemplos de lenguajes de alto nivel: C++, Python, Java, Visual Basic, etc.

Código fuente, es el lenguaje escrito para ser entendido por el ser humano, pero no es comprendido por la máquina ya que esta solo maneja el lenguaje binario.

Compilación es el proceso de traducir un programa en código fuente a programa en código objeto (que usa el lenguaje binario) o código máquina.

Compilador es el programa encargado de compilar o realizar el proceso de compilación. La mayoría de software de programación trae su propio compilador.

2.1.- Concepto de algoritmo

Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Por ejemplo, una receta de cocina con los pasos necesarios para preparar una comida determinada, es un algoritmo. Los algoritmos tienen un principio y un final, y como resultado dan la solución de un problema.


    Un programa puede tener varios algoritmos que realizan diferentes funciones y que se ejecutan según las necesidades del usuario.

2.2.- Lenguaje de pseudocódigo

El pseudocódigo es una forma de escribir los pasos que va a realizar un programa de la forma más cercana al lenguaje de programación que vamos a utilizar posteriormente. Es como un falso lenguaje, pero en nuestro idioma, en el lenguaje humano y en español o en el idioma del programador.


Aquí tenéis un ejemplo de pseudocódigo para dibujar un cuadrado en LOGO:

1 --> Inicio
2 --> Inicializar variables: lado=0, nlados=0
3 --> Pedir por pantalla la introducción de dos valores distintos
4 --> Leer los dos valores y asignarlos a las variables lado y nlados
5 --> Bajar el puntero del lápiz
6 --> Hacer avanzar el puntero la distancia indicada por la variable lado
7 --> Girar 90º la dirección de avance
8 --> Avanzar la distancia del lado
9 --> Girar 90º
10 --> Avanzar la distancia del lado
11 --> Girar 90º
12 --> Avanzar la distancia del lado hasta cerrar el cuadrado
13 --> Subir el puntero del lápiz
14 --> Finalizar


El siguiente paso sería transformar este pseudocódigo en un lenguaje de programación con sus instrucciones o sentencias correspondientes, lo cual daría lugar a un programa o algoritmo.

2.3.- Análisis de problemas


    El análisis de un problema es la parte mas importante para la resolución del mismo, es donde el programador debe imaginarse como plasmar el problema en el ordenador de forma que refleje el proceso real que se realiza, para ello debe secuenciar cada uno de los pasos que se realizan de forma manual y convertirlos en un proceso automatizado.


    Lo primero es definir el problema que queremos resolver, por ejemplo realzar un programa para calcular una ecuación de segundo grado. Primero hay que plantearse qué datos son necesarios y cómo las vamos a introducir en el programa. Luego habrá que realizar una serie de operaciones matemáticas, y por último obtener un resultado e imprimirlo o mostrarlo en pantalla.

    Todo problema debe tener datos de entrada, los cuales serán pedidos a los usuarios que van a usar el programa, luego de esta captura de datos el programa procesara dicha entrada y debe dar una salida que será de utilidad para el usuario; esta salida debe ser veraz, eficiente y confiable, esto se logra con pruebas exhaustivas y con ayuda de la experiencia.

En resumen, los pasos principales a seguir para analizar un problema son:

1.- Entrevistas con los usuarios para obtener información
2.- Recolectar los datos de partida que intervienen en el proceso a seguir.
3.- Dividir el problemas en partes más pequeñas e independientes.
4.- Establecer prioridades o secuencias de desarrollo que optimicen los tiempos necesarios para resolver el problema en conjunto, dando prioridad a las partes que son más complejas o que se necesitan para continuar con otros procesos.
5.- Recabar información sobre los datos de salida que debe ofrecer el programa
6.- Establecer un sistema de comprobación y corrección de errores.

2.4. Diagramas de flujo


    Un diagrama de flujo es una representación esquemática de los distintos pasos de un programa. Constituyen pues, otra forma de representar algoritmos distinta al pseudocódigo, pero que nos sirve de forma complementaria en el proceso de creación de la estructura del programa antes de ponernos delante del ordenador.

    Para la creación de diagramas de flujo utilizaremos unos símbolos y normas de construcción determinados. En nuestro caso, un modelo simplificado de los estándares internacionales, con el objeto de poder interpretar y ser interpretados por otros programadores.

Un ejemplo de diagrama de flujo para calcular la superficie de un rectángulo:

3.- Lenguajes de programación

    Los lenguajes de programación son un conjunto de símbolos y signos que se utilizan para generar una secuencia de instrucciones que permiten crear un algoritmo o un programa para realizar una determinada tarea.
    Existen muchos lenguajes de programación, cada una con sus características propias, otros orientados a un determinado sector, otros diseñados para el aprendizaje y la enseñanza, entre ellos tenemos lenguajes como Basic, Visual Basic, Scratch, Arduino, etc.


   3.1.- Tipos de lenguajes de programación

    Existen dos tipos de lenguajes de programación, los de texto donde se escriben los comandos o instrucciones que forman el programa, y los que usan bloques como Scratch.


   3.2.- Lenguaje 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.

4.- Introducción al programa SCRATCH

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

   4.1.- Entorno de Scratch

    Para conocer mejor el entorno de Scratch vamos a realizar las siguientes actividades:

   4.2.- Tipos de bloques

    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.3.- Primeros pasos con Scratch



Ejercicio 7.- Propiedades de los objetos en Scratch



   4.4.-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.