# Qué es la progrmación por bloques

# ¿Qué es la programación por bloques?

La programación por bloques nos permite **programar de forma gráfica**, sin necesidad de conocer la sintaxis de un lenguaje de programación. Es ideal para comenzar a programar para el alumnado, puesto que permite **descomponer el problema de la programación** en dos subproblemas, y simplificar mucho uno de ellos:

- Saber la **lógica** de la programación: esto supone entender el uso de entradas, salidas, estructuras de almacenamiento de datos y operadores.
- Saber el **lenguaje** de programación: traducir el programa a un lenguaje que el ordenador pueda entender. Esto es lo que nos facilita la programación gráfica por bloques.

{{@7552#bkmrk-el-lenguaje-gr%C3%A1fico-}}

{{@7552#bkmrk-por-ejemplo%2C-la-inst}}

[![leer-us.jpg](https://libros.catedu.es/uploads/images/gallery/2022-10/scaled-1680-/leer-us.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-10/leer-us.jpg)

{{@7552#bkmrk-mientras-que-en-c%C3%B3di}}

```
double distancia;

double fnc_ultrasonic_distance(int _t, int _e){
	unsigned long dur=0;
	digitalWrite(_t, LOW);
	delayMicroseconds(5);
	digitalWrite(_t, HIGH);
	delayMicroseconds(10);
	digitalWrite(_t, LOW);
	dur = pulseIn(_e, HIGH, 18000);
	if(dur==0)return 999.0;
	return (dur/57);
}

void setup()
{
  	pinMode(6, OUTPUT);
	pinMode(5, INPUT);

}


void loop()
{

  	distancia = fnc_ultrasonic_distance(6,5);

}
```

{{@7552#bkmrk-como-se-puede-ver-en}}

{{@7552#bkmrk-por-otra-parte%2C-el-l}}

{{@7552#bkmrk-un-lenguaje-por-bloq}}

{{@7552#bkmrk-imagen-federico-coca}}

Una gran ventaja de la programación por bloques es que muchos de los programas que la utilizan son software libre o **han basado su código fuente en el mismo código,  que es software libre** y se encuentra liberado por sus autores. Esto se traduce en que nuestro alumnado al aprender una herramienta concreta se **alfabetiza y se capacita para muchas otras** sin saberlo.

[![imagen.png](https://libros.catedu.es/uploads/images/gallery/2023-06/scaled-1680-/rLEimagen.png)](https://libros.catedu.es/uploads/images/gallery/2023-06/rLEimagen.png)

<p class="callout info">Más información sobre la programación por bloques [aquí](https://blog.crackthecode.la/programacion-en-bloques)</p>

# Code y Scratch

Dos de los entornos de programación por bloques más extendidos y pioneros a nivel mundial son **Scratch y Code.**

En capítulos posteriores de este curso conocerás más en detalle cada uno de ellos. No obstante queríamos comenzar con un **análisis de fortalezas y debilidades de cada uno** de ellos que quizás pueda ayudarte a la hora de decidir a posteriori cual utilizar con tu alumnado según tu contexto.

[![imagen.png](https://libros.catedu.es/uploads/images/gallery/2023-06/scaled-1680-/yKDimagen.png)](https://libros.catedu.es/uploads/images/gallery/2023-06/yKDimagen.png)

1. **FACILIDAD DE USO:** <span class="HwtZe" lang="es"><span class="jCAhz ChMk0b"><span class="ryNqvb">S</span></span></span><span class="HwtZe" lang="es"><span class="jCAhz ChMk0b"><span class="ryNqvb">i bien ambas plataformas son fáciles de usar, creemos que code.org está más orientado a usuarios principiantes y jóvenes.</span></span></span><span class="HwtZe" lang="es"> <span class="jCAhz ChMk0b"><span class="ryNqvb">Los cursos están bien estructurados en función de los grupos de edad.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Ayuda a los niños a construir una base sólida  para ayudarlos en su viaje de codificación.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Entonces, para los usuarios principiantes, es una victoria para **code.org.**</span></span></span>
2. **ESTRUCTURACIÓN DEL APRENDIZAJE:** L<span class="HwtZe" lang="es"><span class="jCAhz ChMk0b"><span class="ryNqvb">os programadores nuevos pueden perderse en el mundo abierto de scratch y perder el interés, m</span></span><span class="jCAhz ChMk0b"><span class="ryNqvb">ientras que code.org tiene contenido estructurado y progresivo disponible según la edad y los niveles de conocimiento de los niños.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Para esta ronda volvemos a optar por **code.org** como ganador debido a sus cursos personalizados creados de acuerdo con la edad y los niveles de conocimiento de los niños.</span></span></span>
3. **APRENDIZAJE AUTÓNOMO:** <span class="HwtZe" lang="es"><span class="jCAhz ChMk0b"><span class="ryNqvb">Code.org es excelente para usuarios principiantes, pero una vez que comprenden los conceptos básicos, el contenido del curso en code.org se agota con bastante rapidez  y la herramienta en sí tiene muchas limitaciones.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Por otro lado, debido a la forma en que está diseñado Scratch, uno puede pasar horas y horas aprendiendo y dominando los conceptos sin agotar el contenido o aburrirse. Por lo tanto en este aspecto nuestro ganador es **Scratch**.</span></span></span>
4. **FORMATO MÁS FLEXIBLE Y MAYOR PROMOCIÓN DE LA CREATIVIDAD:** <span class="HwtZe" lang="es"><span class="jCAhz ChMk0b"><span class="ryNqvb">Las personas codificadoras en el</span></span></span><span class="HwtZe" lang="es"><span class="jCAhz ChMk0b"><span class="ryNqvb"> mundo real deben lidiar con mucha ambigüedad y, una vez aprendidos, los conceptos se aplican de forma aleatoria.</span></span></span><span class="HwtZe" lang="es"> <span class="jCAhz ChMk0b"><span class="ryNqvb">Si bien existe una estructura básica de sintaxis y el algoritmo debe seguir un patrón, existen múltiples formas de resolver el mismo problema.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Por lo tanto, es necesario aprender a lidiar con la ambigüedad.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">En este sentido, **Scratch supera claramente a code.org.**</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">A diferencia de code.org, donde cada lección se presenta en detalle, en Scratch el alumnado aprende a trabajar los conceptos en un formato más abierto.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Creemos que esto ayuda a lidiar con la ambigüedad y las múltiples formas de abordar un problema de codificación.</span></span></span>

**CONCLUSIÓN:** <span class="HwtZe" lang="es"><span class="jCAhz ChMk0b"><span class="ryNqvb">Dados los puntos anteriores, nuestra recomendación es que, para programadores principiantes, **comiencen aprendiendo los conceptos en code.org** y luego continúen con **Scratch para obtener un aprendizaje avanzado**.</span></span> <span class="jCAhz ChMk0b"><span class="ryNqvb">Una vez que haya practicado en Scratch y tenga un buen manejo de los conceptos básicos, el alumnado estará preparado para  pasar a otros lenguajes de programación basados en texto como JAVA o Python.</span></span> </span>

<p class="callout info">La información de esta página ha sido extraída y traducida de [https://codechamp.ca/scratch-vs-code-org-which-is-best-for-your-kids-to-learn-to-code/](https://codechamp.ca/scratch-vs-code-org-which-is-best-for-your-kids-to-learn-to-code/)</p>