Pid 00276817
Pid 00276817
Pid 00276817
computacional para
aprender a programar
PID_00276817
Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea este eléctrico,
mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
del titular de los derechos.
© FUOC • PID_00276817 Pensamiento computacional para aprender a programar
Índice
1. Introducción........................................................................................ 5
2. El pensamiento computacional...................................................... 14
2.1. Lecturas sobre pensamiento computacional ............................... 16
4. El lenguaje Processing...................................................................... 27
4.1. Lecturas sobre Processing ............................................................ 29
Resumen....................................................................................................... 31
© FUOC • PID_00276817 5 Pensamiento computacional para aprender a programar
1. Introducción
Hoy en día los ordenadores están presentes en todos los ámbitos de nuestra
vida cotidiana. Desde los microordenadores que gestionan el funcionamien-
to de un ascensor hasta los superordenadores utilizados para diseñar medica-
mentos que luchan contra nuevos virus y bacterias; los encontramos en casi
todas partes de manera más o menos visible. Excepto si lees este módulo en
formato papel, hay un ordenador por el medio que te permite acceder a este
recurso docente, sea un teléfono del tipo inteligente, un ordenador portátil o
un dispositivo del tipo tableta. De hecho, como estudiante de la UOC tendrás
que usar el ordenador continuamente para acceder al Campus Virtual, para
participar en los espacios de comunicación, para preparar los trabajos y acti-
vidades que hay que entregar, etc.
Fuente: <https://images.computerhistory.org/siliconengine/1971-2-1.jpg>
latina computare que significa calcular y se empezó a usar hacia los años 40
del siglo pasado para designar a las trabajadoras (típicamente mujeres) que
se dedicaban a pesadas tareas de transcripción, conversión y cálculo de datos
en la NASA (figura 2), como muy bien explica la interesante película «Figuras
ocultas» de 2016.
Figura 2. Primeras computadoras humanas trabajando en la NASA High Speed Flight Station
(verano de 1949)
Fuente: https://www.dfrc.nasa.gov/Gallery/Photo/Places/HTML/E49-54.html
Fuente: https://history.nasa.gov/computers/Ch6-2.html
Ahora bien, no hay ningún otro ámbito de la tecnología que haya avanzado
tanto como el de los ordenadores. Si el sector del automóvil hubiera evolu-
cionado del mismo modo, los coches actuales tendrían motores de casi 1.000
millones de caballos de potencia, acelerarían de 0 a 100 kilómetros por hora
en milésimas de segundo y costarían una fracción del coste actual. Además,
tenemos automóviles desde los últimos años del siglo XIX, con lo cual la evo-
lución del sector ha sido claramente más lenta. Obviamente, la comparación
es injusta, pero ejemplifica el elevado grado de desarrollo del hardware que
incorporan los ordenadores que podemos encontrar por todas partes. En los
próximos años la innovación más importante que veremos en los automóviles
será la conducción automática, basada absolutamente en el uso intensivo de
ordenadores, redes de comunicación e inteligencia artificial.
estos primeros ordenadores fuera muy lento y costoso, de manera que era un
lujo que pocas organizaciones y administraciones se podían permitir, además
del coste del mismo ordenador y el coste de tenerlo funcionando.
Fuente: <https://es.wikipedia.org/wiki/eniac#/media/Archivo:Two_women_operating_ENIAC.gif>
Por otro lado, en la década de los ochenta del siglo XX hubo un verdadero
boom de la informática con la llegada masiva del ordenador personal. Los or-
denadores ya no eran exclusivos de grandes corporaciones o de la Adminis-
tración, sino que, por relativamente poco dinero, era posible tener uno con
unas prestaciones más o menos limitadas pero que permitía crear pequeños
programas aprovechando al máximo las capacidades de hardware disponible.
La mayoría de estos ordenadores proporcionaban un intérprete de BASIC, un
lenguaje de programación pensado para que cualquier persona pudiera crear
© FUOC • PID_00276817 10 Pensamiento computacional para aprender a programar
Figura 5. Ejemplos de revistas de informática de los años ochenta: cubierta del primer número
de Dr. Dobb's Journal (izquierda) y oferta de suscripción a Byte, de Carl Helmers, de junio de
1975 (derecha)
Enlaces relacionados
J.�M.�Wing (2006). «Computational thinking». Communications of the ACM (vol. 49, n.º
3, págs. 33-35). <https://dl.acm.org/doi/pdf/10.1145/1118178.1118215>.
© FUOC • PID_00276817 14 Pensamiento computacional para aprender a programar
2. El pensamiento computacional
Cuando hablamos del pensamiento computacional puede parecer que nos re-
ferimos a la manera como piensa un ordenador. Pero ¿los ordenadores pien-
san? Es una buena pregunta para empezar y es muy importante que lo aclare-
mos. Pues no, los ordenadores no piensan en el sentido que damos general-
mente al término pensar. Los ordenadores no saben pensar, solo saben ejecutar
órdenes, sin entender qué significa lo que hacen, órdenes que alguien, una
persona, el programador, les ha dado previamente. Eso sí, lo hacen muy rápi-
damente y de manera muy precisa, sin cometer errores. Esta es su fortaleza, y
es por eso que nos son tan útiles.
vez cómo sabe Google tantas cosas de nosotros, o cómo es que Netflix nos re-
comienda justamente las series que nos gustan? Básicamente, porque recogen
datos de nuestra actividad y un algoritmo los analiza para determinar otras
acciones coherentes con lo que han hecho otros usuarios con un perfil simi-
lar al nuestro. Cada vez más el mundo utiliza algoritmos para determinar el
funcionamiento de muchos elementos de la vida cotidiana, y entenderlo nos
hará más conscientes y también más cuidadosos respecto a esto. Tú decides:
o programas o te programan.
Fuente: <https://bam.files.bbci.co.uk/bam/live/content/zg6bgk7/large>
operaciones, sentencias, estructuras, etc. e indicando para qué sirve cada una.
Al contrario, se trata de plantear problemas y pensar cómo resolverlos sin usar
directamente el lenguaje de programación. Esta reflexión sobre el problema
y su naturaleza permite desarrollar las competencias del pensamiento compu-
tacional, que serán finalmente las que nos permitirán crear el programa que
resolverá el problema propuesto.
Los dos trabajos, pues, coinciden en un mismo punto. Para crear programas
que resuelven problemas, antes es necesario entender bien la naturaleza del
problema que se tiene que resolver y analizarlo usando las competencias pro-
pias del pensamiento computacional. Los conceptos abstracción y automatiza-
ción son clave, porque son los que posteriormente permitirán convertir una
solución en un programa que pueda ser ejecutado por un ordenador, una má-
quina que es muy eficiente para resolver problemas repetitivos y muy defini-
dos, sin ambigüedades.
Enlaces relacionados
S.�Papert (1980). Mindstorms: computers, children, and powerful ideas. Nueva York: Basic
Books.
J.�M.�Wing (2006). «Computational thinking». Communications of the ACM (vol. 49, n.º
3, págs. 33-35). <https://dl.acm.org/doi/pdf/10.1145/1118178.1118215>.
© FUOC • PID_00276817 19 Pensamiento computacional para aprender a programar
Igual que las personas nos comunicamos en diferentes idiomas, los programas
se escriben usando diferentes lenguajes de programación. Una visita rápida a
la Wikipedia nos dice que hay más de setecientos lenguajes de programación,
la mayoría todavía en uso, sin tener en cuenta dialectos, lenguajes esotéricos
(para hacer broma o para demostrar algún concepto) y otros lenguajes usados
para describir datos más que no programas. Pero, igual que pasa con los idio-
mas, el mundo de la programación está dominado por pocos lenguajes, los
cuales evolucionan hasta que un día desaparecen, y entonces aparecen otros
© FUOC • PID_00276817 20 Pensamiento computacional para aprender a programar
de nuevos que aprovechan las nuevas capacidades, como pasó, por ejemplo,
cuando apareció la web y fue necesario desarrollar nuevos lenguajes de pro-
gramación adecuados (figura 8).
Fuente: https://nickjanetakis.com/blog/how-to-quickly-learn-a-new-programming-language-or-framework
Fuente: <https://upload.wikimedia.org/
wikipedia/commons/thumb/e/e1/
operating_system_placement.svg/1200px-
operating_system_placement.svg.png>
Fuente: <https://miro.medium.com/max/680/1*g-stzguje37m6huchxy6qa.jpeg>
Hemos visto que para hacer que un ordenador haga una cosa concreta nece-
sitamos un programa que se ejecute en el ordenador que queremos hacer fun-
cionar. Este proceso es generalmente bastante complejo, pero para programas
pequeños se puede simplificar con el objetivo de entenderlo mejor:
Por otro lado, programar sí que es un ejercicio iterativo, dado que, excepto en
el caso de programas muy pequeños, uno no escribe todo el programa en una
única iteración y después lo ejecuta, sino que normalmente los programas se
© FUOC • PID_00276817 25 Pensamiento computacional para aprender a programar
En este apartado no podemos introducir todos los conceptos que forman par-
te del ámbito de la programación. Cuando se empieza a programar se hace
habitualmente con el paradigma de la programación� estructurada, que se
fundamenta en unas estructuras de control que permiten controlar el flujo o
secuencia de pasos que el programa sigue, a partir del valor que toman cier-
tas condiciones. Estas condiciones son expresiones matemáticas o lógicas que
comparan variables y constantes para poder responder preguntas básicas, que
son las que determinan qué camino se tiene que coger, si hay que volver atrás
o no, etc. Estos conceptos los iréis aprendiendo conforme vayáis haciendo pe-
queños ejercicios prácticos que los incluyen de manera incremental. Lo que es
importante es entender que un lenguaje de programación no es más que un
conjunto de herramientas que tenemos a disposición para hacer funcionar el
ordenador de forma que haga lo que nosotros queremos.
Enlaces relacionados
V.� T.� Aranda (2004). «Historia y evolución de los lenguajes de programación». Ma-
nual Formativo de ACTA (n.º 34, págs. 85-95). <https://www.acta.es/recursos/revista-digi-
tal-manuales-formativos/284-034>.
4. El lenguaje Processing
• Su punto fuerte es que permite convertir fácilmente una idea, con unas
pocas líneas de código, en algo que aparece en pantalla. Otros lenguajes
de programación necesitan descripciones más complejas para llegar a re-
sultados similares.
Fuente: https://mitpress.mit.edu/sites/default/files/styles/large_book_cover/http/mitp-
content-server.mit.edu%3A18180/books/covers/cover/%3Fcollid%3Dbooks_covers_0%26isbn
%3D9780262028288%26type%3D.jpg
De hecho, la web está llena de recursos sobre Processing, los cuales quedan
obsoletos rápidamente y hay que actualizar para seguir el desarrollo del len-
guaje, que se va adaptando a nuevas tecnologías relacionadas con la web y los
dispositivos móviles. Sin embargo, en un artículo en la revista Mosaic, Quelic
Berga nos hace una presentación de Processing, de sus antecedentes históri-
cos y del contexto en el cual apareció, y también una relación de recursos en
línea, tutoriales y libros que muestran la gran comunidad de práctica que se
ha generado alrededor de Processing. A pesar de que algunos de los recursos
pueden haber quedado obsoletos, se trata de una buena colección que puede
servir como punto de entrada para dar un paseo por el mundo de Processing.
Enlaces relacionados
Processing: <https://processing.org/>.
OpenProcessing: <https://www.openprocessing.org/>.
C.�Reas;�B.�Fry (2006). «Processing: programming for the media arts». AI & Society (vol. 20,
n.º 4, págs. 526-538). <https://link.springer.com/article/10.1007/s00146-006-0050-9>.
Q.�Berga (30 de abril de 2012). «Introducción a Processing» [en línea]. Mosaic, 96. ISSN:
1696-3296. <https://doi.org/10.7238/m.n96.1217>.
R.� Abascal� Mena;� E.� de� J.� López� Ornelas;� J.� S.� Zepeda� Hernández (2015).
Hola Mundo con Processing. México, DF: Universidad Autónoma Metropolita-
na. <http://hermes.cua.uam.mx/repositorio/libros.php?libro=abascalzepedalopez-hola-
mundoprocessing>.
© FUOC • PID_00276817 31 Pensamiento computacional para aprender a programar
Resumen
Por ejemplo, la tenista Monica Seles fue una niña prodigio del tenis y llegó a ser
la número uno del mundo más joven de la historia en 1991. Era famosa por la
fuerza con que golpeaba la pelota, habilidad que trabajó desde muy pequeña,
cuando entrenaba con su padre y se dedicaba básicamente solo a esto, a golpear
la pelota lo más fuerte posible. Si entraba o no entraba, ya lo aprendería más
adelante: lo importante era desarrollar fuerza y habilidad a base de repetir los
mismos movimientos una y otra vez. De hecho, en su biografía, Monica Seles
explica que era conocida como «la niña que solo quería golpear la pelota».
Obviamente, un talento natural y un trabajo constante la llevaron en lo alto
del tenis mundial femenino, pero ella destaca aquellos golpes iniciales como
una cosa divertida.
Seguramente, esto es así en parte porque programar es mucho más que cono-
cer la sintaxis y semántica de un lenguaje de programación. En este sentido, el
pensamiento computacional es clave para ser capaces de analizar un problema
© FUOC • PID_00276817 32 Pensamiento computacional para aprender a programar