Programación de ordenadores: un mundo, una torre de Babel.

La programación de ordenadores es todo un mundo, lleno de lenguajes diversos, con distintas perspectivas, metodologías, herramientas y un sin fin de estilos de programación adaptados cada uno a sus propósitos.

En el siguiente Prezi se ofrece una introducción breve a este complejo mundo. En el Prezi marcaremos, también, cuáles van a ser nuestras elecciones para esta breve introducción a la programación que trabajaremos durante el primer trimestre.

prezi_introprogr

Una cena de ensueño… diseñada Top-Down

cena-de-ensuenoLa situación es la siguiente: has invitado a cenar a tu novia y quieres prepararle una cena estupenda. El menú es tortilla de patata regado con un buen refresco de cola. Son las 18:00, has quedado a las 20:00 y es momento de empezar a preparar todo. Te levantas del sofá y comienzas la tarea. Detalla los pasos a seguir para que todo esté listo cuando llegue.

Describe mediante un diagrama de árbol los bloques de procesos (subprocesos) necesarios para que la cena sea un éxito. Una vez determinados los subprocesos, repartíos el trabajo entre los integrantes del grupo y detallad, cada uno, mediante un diagrama de flujo, el subproceso que se os haya encomendado.

Lavarse los dientes no es tarea sencilla

A continuación os incluyo un texto descriptivo del proceso de lavarse los dientes. Esta podría ser la solución del proceso 2 que hemos planteado como ejercicio.

Después de comer, debemos lavarnos los dientes, acción que, sin dudar, deberemos hacer en el aseo. Así pues, venciendo la pereza del sofá, nos dirigiremos diligentes al baño para realizar tan importante labor. No es intención describir en este momento el arduo camino del sofá al baño, pero digamos que no es tarea sencilla. Dejemos para otro momento, u otro redactor inquieto, la labor de su descripción.
Ya en el aseo, somos conscientes de que, para lavarse los dientes necesitamos, inevitablemente, de un cepillo de dientes y de pasta dentífrica. Si alguno de los ingredientes no está a nuestra disposición, es fútil el intento de nuestra higiene bucal, pues sin alguno de ellos el acto de limpieza estaría incompleto. Busquémoslos pues y, una vez encontrados ambos, cepillo y pasta, podemos continuar.
Desenroscamos el tapón de la pasta con tantos giros antihorarios como sean necesarios. No pararán nuestros dedos en la acción de desenrosque hasta que el tapón quede atrapado en ellos separado del tubo que contiene la crema. Lo dejaremos a un lado, sobre el lavabo, y seguiremos.
Si el tubo no está vacío, bastará con una leve presión en su cuerpo para que el blando cilindro de pasta se deslice sobre el cabezal de nuestro cepillo, sobre las cerdas insertadas en el mismo, que esperan con ansia su frescor. No debe apretarse el tubo en su mitad más gruesa, sino en la más alejada de la salida de la crema, pero allá donde termine el grosor del tubo, que no el mismo tubo, pues dicha disminución del grosor determina el final de la crema en su interior.
Una vez crema sobre las cerdas del cepillo, comenzaremos la limpieza, que deberá hacerse de la siguiente forma. Para empezar, juntaremos nuestras dos filas de dientes, superiores e inferiores, e introduciremos el cepillo en la boca con las cerdas y la crema hacia los dientes, entre la mejilla y la barrera que aquellos conforman.
Comenzaremos el frotado, de manera enérgica, realizando movimientos de arriba abajo del cepillo sobre los dientes. Comenzaremos por las muelas más interiores de la boca, las más cercanas a la muela del juicio, aquella que muchos ni aún en el final de su vida han tenido. El proceso de cepillado se irá desplazando hacia los dientes más frontales y, una vez superados estos, continuará hacia las muelas interiores del extremo opuesto de la boca del que se ha empezado. No importa el comienzo en izquierda o derecha, queda a gusto del que se los limpia. El objetivo de este primer cepillado es, además de lustrar la cara externa del esmalte, extender la crema y generar la espuma que ayudará en la limpieza.
A continuación deberemos separar las rías de dientes y comenzar un cepillado similar, del interior al exterior, pero haciendo cepillados de las muelas y dientes de arriba hacia abajo, si en la parte superior, y de abajo hacia arriba, si en los dientes inferiores, como si quisiéramos barrer el suelo de nuestros dientes y lanzar la basura fuera de ellos. Deberemos repetir este proceso tanto arriba, como abajo, tanto por el exterior, como por el interior de los dientes.
Queda la base de muelas y dientes, pues en ella también se posa y agarra la porquería. Con el cepillo frotaremos, como el que friega un suelo o limpia las telarañas de un techo, la superficie de las muelas y dientes con los que molemos y desgarramos. Los movimientos de cepillo deben ser enérgicos y presionar los dientes, desplazando hacia dentro y hacia fuera de la boca el cepillo, o en sentido paralelo a nuestro rostro para los dientes frontales.
Finalmente no debemos olvidar lo que muchos desprecian en la limpieza: la lengua. Con la cara posterior del cepillo donde se insertan las cerdas, frotaremos la superficie de nuestra lengua, pues en ella también se acumulan residuos imperceptibles que son los causantes, en la mayoría de ocasiones, de la desagradable alitosis. Muchos cepillos muestran en esa cara opuesta rugosidades en la forma del cabezal, lo que indica que disponen del limpia lenguas a utilizar. Si el cepillo del que disponemos no lo tuviese, podríamos usar las propias cerdas, pero cuidando de no presionar en demasía para evitar lastimarnos las delicadas papilas gustativas.
El proceso de limpieza ha finalizado y debemos ahora deshacernos de los restos que en la boca hayan podido quedar mezclados con la espuma generada por la crema. Para ello, usaremos un vaso que llenaremos de agua o, en su defecto, si no dispusiésemos de vaso, arrimando nuestra boca al grifo. Hemos de decir que el proceso de apertura del grifo dependerá del tipo al que nos enfrentemos: monomando o de rosca.
Si el grifo es monomando, bastará con levantar la visible palanca para que el agua mane por el grifo. Desplazar la palanca levantada a izquierda o a derecha hará que el agua vire de fría a caliente, respectivamente. Si, por el contrario, el grifo es de aquellos que presentan varias manillas giratorias, deberemos elegir aquella que nos indique por el color la temperatura del agua: azul para la fría, rojo para caliente (abriendo, como veremos ahora, una porción de ambas nos permitirá un agua tibia interesante para según que usos). En este caso la apertura de la manilla correspondiente seguirá instrucciones similares a la del tapón del tubo de pasta: girar en sentido antihorario para abrir y horario para cerrar.
Hecha la apertura y el agua manando del grifo, colocaremos el vaso, si lo tenemos, bajo el chorro, hasta que el volumen del agua esté próxima al borde del vaso, sin rebasarlo. Si careciéramos de vaso, serían nuestros labios los que deberían aproximarse al chorro y sorber como se pudiese el agua necesaria para el aclarado que a continuación detallaremos.
El agua debe, en nuestra boca, recorrer todos los recovecos que cavidad, dientes y lengua forman. Hinchando y deshinchando las mejillas y ayudándonos con la lengua, moveremos el agua por todo la cavidad bucal. Presionando con la lengua hacia delante conseguiremos que aumente la presión en el agua interior de manera que al pasar por entre las hendiduras de los dientes arrastre restos de suciedad y crema propios del cepillado. Ni que decir tiene que en todo momento nuestros labios deben estar sellados, pues de otro modo el agua escaparía, cual reo ansioso por la libertad, de la boca. Tras unos veinte segundos mareando a quien produce en alta mar otros mareos, expulsaremos el agua sobre el lavabo, con fuerza, ayudándonos con mejillas y lengua para expulsar cualquier resto. Repetiremos esta acción un número no menor de tres veces, hasta que consideremos bien enjuagada la boca.
Tras secar los labios con la toalla, no abandonaremos el baño sin dejarlo todo en orden, de manera que cualquiera que tras nosotros entre al servicio sea incapaz de saber que allí ha pasado nada.
Para ello, limpiaremos el vaso y cepillo bajo el agua del grifo, que habremos abierto antes siguiendo las instrucciones anteriores. Secaremos, después, los utensilios y los dejaremos en su lugar reservado en el baño. Finalmente, limpiaremos el lavabo de cualquier resto de crema o residuos fruto de nuestro aseo bucal y lo secaremos con el paño reservado para tal uso.
Con el aliento fresco y los dientes relucientes, podremos, por fin, dirigirnos de nuevo al sofá para continuar con la mejor tarea del día: la siesta.

Evidentemente, esta descripción algo letrada podemos esquematizarla de manera que se aproxime cada vez más a lo que sería un proceso implementable en un ordenador. El esquema podría ser el siguiente.

Voy al baño.  (SUBPROCESO COMPLEJO)
¿Está el cepillo en su sitio?
Si no está, lo busco. Cuando lo encuentre, continuo.
¿Está la pasta de dientes en su sitio?
Si no está, lo busco. Cuando lo encuentre, continuo.
Desenrosco el tapón (SUBPROCESO COMPLEJO) y trato de echar pasta en el cepillo.
¿Hay pasta de dientes en el tubo?
Si no hay, anoto “comprar pasta de dientes” en la lista de la compra (COMPRAR PASTA Y MÁS COSAS: SUBPROCESO COMPLEJO) y fin del proceso, pues no puedo limpiarme los dientes.
Si hay, echo la pasta de dientes en el cepillo. (SUBPROCESO COMPLEJO)
Cierro el tubo y lo dejo en su sitio.
Me cepillo los dientes. (SUBPROCESO COMPLEJO)
Busco el vaso para enjuagarme ¿hay vaso?
Si no lo hay, beberé directamente del grifo, por lo que paso a enjuagarme los dientes.
Si lo hay,
abro el grifo del agua fría (SUBPROCESO COMPLEJO).
Pongo el vaso debajo del chorro
¿Está lleno? Si no, continúo con el vaso debajo del chorro.
Si ya está lleno, retiro el vaso y cierro el grifo.
Bebo un poco del vaso,
Paso el agua por toda la boca (sin beberla!!!!) (SUBPROCESO COMPLEJO)
La escupo.
Repito los tres pasos anteriores tres veces.
Limpio el lavabo de los restos de la limpieza.  (SUBPROCESO COMPLEJO)
Limpio el cepillo bajo el chorro de agua del grifo.  (SUBPROCESO COMPLEJO)
(antes tendré que haberlo abierto y después deberé cerrar el grifo-SUBPROCESO COMPLEJO-)
Recoger todo (SUBPROCESO COMPLEJO).

Observamos en este esquema de la descripción, varias cosas:

  • no se incluyen, realmente, todos los procesos necesarios. Un proceso puede estar compuesto de subprocesos que deben ser detallados hasta su instrucción más simple, para que el proceso pueda realizarse;
  • en la descripción hay momentos en los que se deben tomar decisiones, en función de determinadas condiciones;
  • en la descripción hay instrucciones que deben repetirse, bien un número determinado de veces, bien hasta que se dé una condición;

Además, la descripción textual puede ser la que parece más natural para nosotros, acostumbrados a leer descripciones de procesos, pero hace difícil visualizar el proceso y aquellos pasos del proceso que son, por ejemplo, tomas de decisiones o repeticiones.

Por ello, un proceso puede describirse de manera visual utilizando varias técnicas como, por ejemplo, los Diagramas de Flujo.

Por ejemplo, el proceso de lavarse los dientes y el subproceso enjuagar se representarían con los diagramas de flujo siguientes.

Lavarse los dientes

lavarse-los-dientes-fc

Enjuagar

enjuagar-fc

Existen otras técnicas de representación de procesos, como aquellas basadas en expresar en diagramas de árbol aquellos subprocesos que componen un proceso mayor. Por ejemplo, el proceso de lavarse los dientes podría representarse como sigue.

lavarse-los-dientes-arbol

Diseñar un proceso así, partiendo de los bloques más generales, para ir refinando, es seguir el proceso de diseño Top-Down.

Como veis, en nuestra vida real sabemos hacer muchas cosas, pero definir cada paso para hacerlas, no es tarea sencilla. Y eso es lo que deberemos hacer cuando programemos…

Programando el mundo en que vivimos

ruedas-dentadasComo hemos comentado en la introducción del curso, la Internet de las Cosas, un mundo en el que todo esté interconectado, está próximo. Y saber hablar con esos dispositivos a nuestro alrededor para saber decirles qué queremos de ellos será una competencia importante. Hablar el lenguaje de las máquinas o, lo que es lo mismo, programar, algo que, aunque no lo creamos, ya sabemos hacer sin saberlo.

Programar es desmenuzar algo, que habitualmente hacemos, en todas y cada una de las acciones que componen ese algo.  En nuestra vida diaria, seguimos multitud de procesos que hemos aprendido a lo largo de nuestra vida y que están compuestos por decenas de acciones ya automáticas, que ni siquiera somos conscientes de que las realizamos.
Un ordenador, como aprendimos el año pasado, no es sino un conjunto de hierros que no sabe hacer nada, a no ser que nosotros le digamos qué hacer. Pero el ordenador, como digo, no sabe hacer NADA. Cuando le demos una instrucción debemos darle todas y cada una de las necesarias para que realice lo que queremos. Un pequeño olvido, una instrucción olvidada que a nosotros nos parece obvia, será una orden que el ordenador no cumplirá, pues no le ha sido dicha, y el proceso que le hayamos ordenado no acabará como nosotros esperamos.
creatividad_procesoPara diseñar un programa debemos ser capaces de volver a cuando lo aprendíamos todo, pues el ordenador es un bebé en nuestras manos al que hay que decirle todo. Debemos analizar cada uno de los procesos y, como hemos dicho al principio, desmenuzarlo en todas y cada una de las acciones, por muy simples que sean, que lo componen.
Y no es fácil. Para comprobarlo, vamos a plantear unos ejercicios que parecen más de una asignatura como Lengua. En los ejercicios que planteo a continuación, debemos describir un determinado proceso, con todo el detalle del que seamos capaces. El objetivo primero es así de simple, una redacción descriptiva de un proceso.
Después veremos qué tienen que ver esto con programar un ordenador… y finalmente aprenderemos algún lenguaje con el que comunicarnos con las computadoras.
Pero primero, redactar. ¡Ánimo!

Procesos

Proceso 1

Te encuentras dentro del aula de informática. Suena el timbre y debes abandonar el aula. Detalla los pasos que sigues.

Proceso 2

Estás en tu casa, tumbado en el sofá, después de comer. Detalla todos los pasos necesarios para lavarte los dientes.

¡Bienvenidos!

Hola a todos…

Este es vuestro 2º año en la asignatura Tecnologías de la Información y la Comunicación (en adelante TIC). El año pasado aprendisteis una serie de conceptos, herramientas y habilidades que os acercaron a esa idea de nativos digitales de la que tanto se habla.

digcomp-marco-europeo-de-competecias-digitales-1-638Os parasteis a pensar porqué, gracias a las TIC, nuestra Sociedad se viene a llamar la Sociedad del Conocimiento. Averiguasteis si, de verdad, sois esos nativos digitales que el Marco Europeo para la Competencia Digital (DIGCOMP) se marca como objetivo para todos sus ciudadanos.

Imaginasteis un futuro, ya muy presente, en el que el concepto de Internet de las Cosas (IoT-Internet of Things) será, como dicen los angloparlantes, una “commodity”, un servicio que se asume que siempre está ahí para nuestro uso. Y en ese mundo de la IoT, todo será programable, por lo que la competencia de programación computacional se hace fundamental en los ciudadanos digitales y, por ello, aprendisteis las nociones básicas de lo que es programar (aplicaciones, dispositivos, servicios…).internet-of-things

Por ello, durante el presente curso, ampliaremos los contenidos que trabajasteis el curso pasado y nos centraremos en otros nuevos. Como podéis leer en la página Acerca de esta asignatura, empezaremos ampliando los conceptos de programación de ordenadores, centrándonos en las estructuras básicas de programación e introduciendo la programación bajo el paradigma orientado a objetos con java.

Continuaremos dando el salto a la red, presente de manera continua en nuestras vidas, desde sus orígenes en ARPANET, pasando por la explosión que supuso la web2.0, hasta el día de hoy, un mundo en el que la IoT y las realidades aumentada y virtual se entremezclan para prepararnos para un futuro seguro sorprendente.

Finalmente,  un mundo en red es un mundo de posibilidades, pero también de peligros. Al igual que desde pequeños aprendemos a movernos por el mundo físico con las precauciones necesarias, aprenderemos en el útlimo bloque de contenidos, los conceptos básicos de seguridad para poder disfrutar de una vida digital sana.