1 00:00:01,000 --> 00:00:04,366 Empezamos viendo la parte de programación. 2 00:00:04,366 --> 00:00:11,933 Como hemos visto, nosotros estamos intentando, de alguna forma, ponernos en el pellejo de un constructor de robots. 3 00:00:11,933 --> 00:00:21,366 Desde el principio del curso, aunque no lo creáis, hemos estado repasando y ampliando cosas que necesitaremos en el proceso de construcción de un robot. 4 00:00:21,366 --> 00:00:24,700 Porque si yo quiero construir un robot, lo primero que tengo que hacer es 5 00:00:24,700 --> 00:00:32,633 elegir los materiales que voy a utilizar, a veces necesito una pieza que no existe o que no tengo y me la tengo que imprimir en 3D, 6 00:00:32,633 --> 00:00:35,700 con lo cual la tengo que diseñar y luego la tengo que imprimir, 7 00:00:35,700 --> 00:00:40,066 tengo que generar una documentación con lo cual tengo que hacer un documento de proyecto, 8 00:00:40,066 --> 00:00:49,599 tengo que ir al taller y realizar una serie de operaciones sobre madera o metal o lo que sea... 9 00:00:49,599 --> 00:00:56,199 Con lo cual, todo lo que estamos viendo durante todos estos años, incluyendo este, básicamente tiene que ver con esto. 10 00:00:56,200 --> 00:01:01,400 Luego vamos a un Software de diseño por ordenador y me diseño un plano para mi objeto, 11 00:01:01,400 --> 00:01:06,400 acotado y en condiciones para que luego, alguien, en una fábrica, me lo pueda fabricar. 12 00:01:06,399 --> 00:01:11,033 Todo eso es necesario, aunque no lo creáis, cuando vamos a construir un robot, 13 00:01:11,033 --> 00:01:19,666 todo lo que llevamos dado, parecía una cosa abstracta, aunque ya os lo introduje al principio de curso, tiene un objetivo que es el de construir un robot. 14 00:01:19,666 --> 00:01:23,066 Cuando un robot se construye dándote un kit 15 00:01:23,066 --> 00:01:29,466 (como cuando vamos a la tienda y compramos un kit, p. ej. un lego, y nos dan todas las piezas colocadas y unas instrucciones por colores) 16 00:01:29,466 --> 00:01:32,833 con lo cual aquello es pin, pin, pin y todo encaja, todo funciona perfecto. 17 00:01:32,833 --> 00:01:37,166 Pero cuando vamos a construir una máquina que cumpla una función, que esto es lo que es un robot, 18 00:01:37,166 --> 00:01:43,433 una máquina automática o autónoma que cumple una función, a veces no tienes un kit. Te lo tienes que inventar tú. 19 00:01:43,433 --> 00:01:47,800 Y ese es el punto en el que empiezas a tirar de todos estos recursos que hemos estado estudiando: 20 00:01:47,800 --> 00:01:53,433 de hacer planos, de cómo interpretar las instrucciones que te encuentras por Internet de las piezas, 21 00:01:53,433 --> 00:02:03,033 de cómo hacerte una pieza en 3D para que encaje y que aquello se quede sujeto como debe, cómo elegir los materiales adecuados 22 00:02:03,033 --> 00:02:08,900 (un material que no pese, un material que sea elástico, un material que sea flexible, o que no, un material que aguante la temperatura, o que no...) 23 00:02:08,900 --> 00:02:13,700 Entonces, a la ahora de elegir los materiales, también tenemos que tener ciertos conocimientos de robótica. ¿vale 24 00:02:13,700 --> 00:02:24,200 Y nos queda la última parte. Nos hemos centrado en la parte del chasis, digamos, y ahora vamos a la última parte que es la del programa. 25 00:02:24,200 --> 00:02:35,000 ¿Vale? Vamos al cerebro. Vamos a meter una placa, una placa de control que en nuestro caso será una Crumble. 26 00:02:35,000 --> 00:02:39,000 Describiremos cómo funciona, qué conexiones tiene, ... 27 00:02:39,000 --> 00:02:43,766 Y entonces, ahora, tenemos un par de problemas o tres. ¿vale? 28 00:02:43,766 --> 00:02:51,933 El primero es que este cerebro viene vacío. Es un niño recién nacido. No sabe nada. No sabe ni respirar. 29 00:02:51,933 --> 00:02:56,433 Con lo cual nosotros tenemos que decirle absolutamente todo lo que tiene que hacer. ¿vale? 30 00:02:56,433 --> 00:03:05,466 Yo siempre digo que los robots, los ordenadores,... dicen que la inteligencia artificial, ... eso es mentira. 31 00:03:05,466 --> 00:03:12,400 Los ordenadores son tontos, de entrada. ¿Qué hacen los ordenadores? Sólo lo que se les dice. 32 00:03:12,400 --> 00:03:20,200 Yo le digo a un ordenador: "Suicídate", y el ordenador se suicida. ¿Vale? Le digo a un ordenador que sume 2 y 2 y me los suma, pero no hace nada más. 33 00:03:20,200 --> 00:03:25,666 Sólo hace aquello que se le ordena, ¿vale? Es un esclavo fiel, pero no hace nada por sí sólo. 34 00:03:25,666 --> 00:03:29,933 No tiene inteligencia ninguna. La inteligencia la tenemos que poner nosotros. ¿Cómo? A través de un programa. 35 00:03:29,933 --> 00:03:41,433 Y otra cosa que tenemos es (que) cómo interacciona ese cerebro con las piezas que nosotros queremos que se muevan o que actúen. 36 00:03:41,433 --> 00:03:47,566 Evidentemente, nosotros tenemos un cerebro que está aquí dentro, dentro del cráneo, 37 00:03:47,500 --> 00:03:50,933 y luego tenemos un cuerpo que es el que interactúa con el entorno. 38 00:03:50,933 --> 00:03:54,700 Tenemos unos ojos que están recibiendo imágenes y luego las envían al cerebro. 39 00:03:54,700 --> 00:03:59,700 Y luego, si yo quiero coger algo, tengo manos, que yo puedo ordenar que se muevan y cojan algo. 40 00:03:59,700 --> 00:04:08,233 Y, al final, yo, a través de los elementos que tengo conectados a mi cerebro, puedo hacer cosas, y es como ejecuto las acciones. 41 00:04:08,233 --> 00:04:14,366 Tengo sensores, que serían mis oídos, mis ojos, mi sentido de la sensibilidad. 42 00:04:14,366 --> 00:04:19,899 Esos son mis sentidos, ¿vale? Eso es lo que me introduce la información de lo que tengo alrededor. 43 00:04:19,899 --> 00:04:26,633 Y luego tengo los músculos, los pulmones, el corazón... 44 00:04:26,633 --> 00:04:30,700 Tengo las cosas que hacen que la maquinaria se mueva: tengo actuadores. 45 00:04:30,700 --> 00:04:38,300 Tengo cosas que son sensibles: son sensores, y tengo cosas que actúan, cosas que ejecutan acciones: que son actuadores. 46 00:04:38,300 --> 00:04:55,800 Entonces, en un elemento robótico, yo lo que tengo es, por un lado sensores, y por el otro actuadores. ¿vale? 47 00:04:55,800 --> 00:05:02,533 Los sensores introducen información a mi cerebro, 48 00:05:03,133 --> 00:05:10,033 y los actuadores ejecutan aquellas acciones que el cerebro necesita 49 00:05:10,033 --> 00:05:14,200 ejecutar para cumplir la acción para la que hemos creado el programa. 50 00:05:14,200 --> 00:05:22,900 Y en medio, pues hay algo que interpreta lo que recibimos desde aquí (sensores), 51 00:05:22,900 --> 00:05:34,366 toma decisiones, y en función de lo que tenga alrededor, mueve o no mueve los actuadores. ¿Entendéis? 52 00:05:34,366 --> 00:05:42,766 Y esto de aquí en medio es el programa. Pro---gra---ma. 53 00:05:42,766 --> 00:05:47,433 ¿Vale? Y esto es lo que dota de inteligencia a todo el sistema. 54 00:05:47,433 --> 00:05:50,566 El resto son cosas de electrónica tontas. 55 00:05:50,566 --> 00:05:56,300 Es un motor, un motor no tiene ninguna inteligencia: si le conecto gira y si no lo conecto, no gira. 56 00:05:56,300 --> 00:06:05,133 Un sensor de presión, por ejemplo, un botón (un botón en un sensor de presión: detecta si lo estoy presionando o no, ¿Vale?) 57 00:06:05,133 --> 00:06:13,400 no tiene ninguna inteligencia, si lo presiono me dice que está conectado y si lo suelto me dice que está desconectado... 58 00:06:13,400 --> 00:06:15,233 Es decir, no es inteligencia ninguna. 59 00:06:15,233 --> 00:06:21,333 Esto (sensores y actuadores) son elementos electrónicos. Y es el programa el recoge esa información, la procesa, 60 00:06:21,333 --> 00:06:26,466 toma decisiones y ejecuta en caso de necesidad. ¿Vale? 61 00:06:26,466 --> 00:06:35,100 Bueno, pues, estos sensores y estos actuadores tenemos que conectarlos a nuestra placa. 62 00:06:35,099 --> 00:06:49,700 Y eso se hace a través de cables. Con lo cual, necesito conexiones que son cables. 63 00:06:49,566 --> 00:07:03,300 ¿Puedo conectar cualquier cosa a mi Crumble, a mi cerebro? No, no puedo conectar cualquier cosa. Tengo limitaciones. 64 00:07:03,266 --> 00:07:13,066 Yo no puedo coger, yo que sé, el enchufe, y meterlo... la corriente del enchufe a mi circuito electrónico. ¿Por qué? 65 00:07:13,066 --> 00:07:19,466 Porque se quema, evidentemente. Aquello pega un chispazo, sale ardiendo, y podemos montar una barbacoa. 66 00:07:19,600 --> 00:07:24,600 Pero no vale para hacer nada, porque lo he quemado. Entonces tenemos que tener cuidado. 67 00:07:24,366 --> 00:07:31,733 Estas conexiones las tengo que hacer a esta placa de control, pero las tengo que hacer de una forma inteligente. ¿Por qué? 68 00:07:31,066 --> 00:07:39,400 Porque esto, como es electrónica, en el caso de la Crumble, va a funcionar a 4,5V. 69 00:07:41,433 --> 00:07:53,700 ¿Eso qué quiere decir? Eso quiere decir, que los sensores tienen que trabajar entre... 70 00:07:53,200 --> 00:08:20,233 "Los sensores y los actuadores deben trabajar entre 0V y 5v". 71 00:08:21,466 --> 00:08:30,599 ¿Vale? Por tanto, un sensor de presión (lo que hemos dicho: un botón), cuando yo lo pulso, 72 00:08:30,600 --> 00:08:37,533 ¿Qué señal llega a través del cable? Cuatro voltios y medio, o cinco. ¿vale? 73 00:08:36,666 --> 00:08:41,599 Vamos a ponerlo correcto este 5 que es lo que tiene Arduino, y vamos a poner 4,5V, perdonad, para que sea la del Crumble ¿vale?. 74 00:08:41,600 --> 00:08:45,000 ... para que sea la del Crumble ¿vale?. 75 00:08:45,000 --> 00:08:47,866 Las placas suelen estar entre 4,5... 76 00:08:47,766 --> 00:08:54,233 De hecho Crumble acepta entre 4,5 y 5,5 ¿vale? O sea, podríamos meterle 5v y no explota. ¿De acuerdo? 77 00:08:54,233 --> 00:08:58,200 Pero lo normal es trabajar sobre 4 voltios y medio. 78 00:08:58,199 --> 00:09:06,666 Entonces, normalmente las placas están en torno a los 5V que es la señal estándar en electrónica para los robots. 79 00:09:06,666 --> 00:09:10,033 Entonces, cuando un sensor detecta lo que sea, 80 00:09:10,600 --> 00:09:15,600 me manda la señal. Estoy detectando, ¿Y cómo es esa señal? Pues es un cable con 5V. 81 00:09:16,566 --> 00:09:23,733 Y cuando ese sensor no detecta nada, ¿Qué tenemos en ese mismo cable? 0V. ¿Vale? 82 00:09:23,733 --> 00:09:31,300 Entonces yo soy capaz de diferenciar entre que un sensor detecte o no detecte lo que sea, lo que tenga que detectar, 83 00:09:31,300 --> 00:09:40,333 gracias a que el cable (la conexión) que yo tengo conectada a ese sensor, por ese cable me llegan 5V o no me llega nada. 84 00:09:40,333 --> 00:09:43,300 ¿Vale? Y eso es lo que yo voy a comprobar. 85 00:09:43,300 --> 00:09:46,500 Y lo mismo con los actuadores. 86 00:09:46,500 --> 00:09:51,633 Si yo quiero que un motor funcione le tengo que poner 5V, y el motor gira. 87 00:09:51,633 --> 00:09:57,166 Y si no quiero que funcione, le pongo 0V y el motor se para. ¿Vale? Por ejemplo un motor... 88 00:09:56,566 --> 00:10:02,233 Puede ser una luz. Si quiero que una luz se encienda le pongo 5V y la luz se tiene que encender. 89 00:10:02,233 --> 00:10:06,033 Pero si no quiero que se encienda, le pongo 0V y la luz se apaga. 90 00:10:06,033 --> 00:10:09,366 Y lo mismo con cualquier otro tipo de actuador que yo tenga. ¿De acuerdo? 91 00:10:09,366 --> 00:10:14,200 Bueno, entonces, esto es importante que lo tengamos en mente, porque nosotros lo que vamos a trabajar ahora es, 92 00:10:14,200 --> 00:10:19,733 por un lado, con este programa, pero necesariamente, necesariamente, 93 00:10:19,733 --> 00:10:24,733 tenemos que hacer cosas con electricidad... y tenemos circuitos. 94 00:10:24,866 --> 00:10:27,333 Y tenemos que, si tenemos un sensor, 95 00:10:27,333 --> 00:10:32,766 que tiene que trabajar a 5V y normalmente trabaja a 8, le tenemos que poner, ¿el qué? 96 00:10:32,766 --> 00:10:39,866 una resistencia, para bajar la tensión a 5V y que no me queme mi placa. ¿Entendéis? 97 00:10:39,866 --> 00:10:42,333 Si yo tengo, imaginaros, 98 00:10:43,533 --> 00:10:49,000 ... un sensor ... (lo voy a poner así en forma de nube para que sea cualquiera, un sensor cualquiera... 99 00:10:48,400 --> 00:10:51,933 ... imaginaros un sensor de presión, un botón, 100 00:10:51,199 --> 00:10:57,033 ... o un sensor de temperatura que está midiendo si la temperatura ha alcanzado los 30º o no, ¿vale?) 101 00:10:58,133 --> 00:11:03,133 Entonces, este sensor funciona a 18V. 102 00:11:03,766 --> 00:11:10,500 Si yo esto lo conecto a mi Crumble, ¿vale? ... a mi Crumble, 103 00:11:11,766 --> 00:11:17,266 ...la puedo freír, porque en el momento en el que esto se active, me está metiendo 18V 104 00:11:17,266 --> 00:11:22,266 y como mi Crumble funciona a 4,5 ¿Qué he hecho? Una barbacoa. 105 00:11:22,466 --> 00:11:23,666 La he quemado. 106 00:11:23,533 --> 00:11:25,600 ¿Que tengo que hacer para que esto no suceda? 107 00:11:25,600 --> 00:11:38,166 Aquí en medio tendré que poner una resistencia que haga que la tensión caiga y ya no me lleguen los 18V o lo que tenga el sensor, 108 00:11:38,166 --> 00:11:39,933 sino que me va a llegar... ¿Cuánto? 109 00:11:39,500 --> 00:11:44,133 Pues tengo que poner una resistencia que haga que aquí me lleguen 4,5V. 110 00:11:44,133 --> 00:11:49,000 ¿Y que resistencia es esa? Pues tenemos que calcularlo, claro. No voy a ir probando, ¿no? 111 00:11:50,100 --> 00:11:53,566 Entonces, tengo que hacer circuitos y tengo que saber manejar ese tipo de cosas.... 112 00:11:53,566 --> 00:11:56,333 y por eso hemos estudiado electricidad otros años... 113 00:11:56,333 --> 00:12:04,366 ...¿vale?, para que nosotros podamos ahora saber qué resistencias o qué cosas necesito conectar 114 00:12:04,366 --> 00:12:11,700 para que los sensores y los motores funcionen correctamente a través de mi placa. 115 00:12:11,733 --> 00:12:14,666 ¿Alguna duda entonces? ¿Nada? 116 00:12:14,666 --> 00:12:22,766 Bien. Pues vamos entonces al punto (esta era un poco la introducción) para ver "algoritmo vs programa". 117 00:12:22,833 --> 00:12:29,166 Estuvimos viendo al principio de curso lo que eran los algoritmos, ¿verdad? ¿Os acordáis? 118 00:12:29,166 --> 00:12:35,600 ¿Qué era un algoritmo? A ver quién se acuerda... "Los pasos necesarios para soluciona un problema". ¿Vale? 119 00:12:35,600 --> 00:12:43,900 Un algoritmo es una secuencia de pasos ordenada que nos llevaba a solucionar un determinado problema. 120 00:12:43,900 --> 00:12:51,300 Por lo tanto, situación de partida, situación de inicio: Tenemos un problema que hay que resolver. 121 00:12:51,300 --> 00:12:58,933 Situación intermedia: Tengo que pensar que pasos hay que dar para resolver el problema. ¿Vale? 122 00:12:58,933 --> 00:13:06,699 Y después, construyo una secuencia, una lista de esos pasos ordenada, 123 00:13:06,866 --> 00:13:13,100 que me lleva de la situación "tengo un problema" a la situación "he resuelto el problema". 124 00:13:13,133 --> 00:13:17,866 Por ejemplo, si os acordáis, tenemos el algoritmo de "Quiero Café", ¿Os acordáis, no? 125 00:13:17,866 --> 00:13:20,900 El algoritmo de "Quiero Café", yo tenía un problema, quería café, 126 00:13:20,900 --> 00:13:25,100 estoy dormido, estoy estudiando, necesito un poco de energía, ¿vale? 127 00:13:25,100 --> 00:13:30,100 Pues venga, necesito un café. Y entonces empiezo a hacerme preguntas. ¿Cómo soluciono mi problema? 128 00:13:30,100 --> 00:13:36,566 Pues, me tengo que tomar un café, pero ¿tengo un café? No, no tengo un café. 129 00:13:36,566 --> 00:13:41,200 ¿Me puedo hacer un café? Pues sí, tengo café en la cocina. 130 00:13:41,200 --> 00:13:49,266 Pues entonces tienes que bajar a la cocina, sacar el café de la alacena, tengo que poner la cafetera, hacerte el café y luego ya te lo tomas. 131 00:13:49,266 --> 00:13:54,266 Si no tengo café en la cocina pues tengo que irme al supermercado y comprarlo. Etc, etc... ¿Vale? 132 00:13:54,266 --> 00:14:01,900 Es decir tengo una secuencia ordenada de pasos, pero al final, siempre, la gracia de los algoritmos es que resuelven el problema. 133 00:14:01,900 --> 00:14:08,000 Si yo quiero café, tengo que terminar tomándome el café, porque si no, no hemos hecho bien el algoritmo. 134 00:14:08,000 --> 00:14:13,566 No vale el "No me tomo el café", ¿me explico? Tengo que tomarme el café. 135 00:14:13,566 --> 00:14:19,333 Entonces, eso es un algoritmo bien hecho. Tengo un problema, que pasos tengo que ejecutar para solucionarlo. 136 00:14:19,333 --> 00:14:27,633 Y ahí en medio, tenemos una serie de estructuras que vamos a ver. Y ¿Que diferencia eso de un programa? 137 00:14:27,633 --> 00:14:33,266 El algoritmo son los pasos que yo tengo que dar para solucionar un problema, ... 138 00:14:33,266 --> 00:14:44,866 ... mientras que un programa son las ordenes concretas que yo doy para que alguien solucione ese problema. Es decir, ... 139 00:14:46,266 --> 00:14:49,466 yo tengo que dar ordenes. Fijaros. Yo digo, ... 140 00:14:49,466 --> 00:14:55,633 ... quiero tomar café. Lo primero que tengo que hacer es preguntarme si tengo un café encima de la mesa. No lo tengo. 141 00:14:55,633 --> 00:14:57,600 ¿Tengo café en la cocina? Sí. 142 00:14:57,933 --> 00:15:03,466 Entonces yo digo: "Baja a la cocina". Pero eso es un concepto. 143 00:15:03,466 --> 00:15:08,933 Yo estoy sentado en mi silla en la primera planta de mi chalet, 144 00:15:08,933 --> 00:15:15,900 y tengo que bajar a la planta de abajo a la cocina. ¿Qué tengo que hacer? ¿Qué ordenes me daríais vosotros si yo fuera, ... 145 00:15:15,900 --> 00:15:22,300 ... pues eso, una mente vacía, ... qué órdenes me tendríais que dar para que yo llegara a la cocina y me hiciera un café. 146 00:15:22,300 --> 00:15:24,266 Pues tendríais que empezar diciendo: 147 00:15:24,266 --> 00:15:28,900 Levantate de la silla, sal de la habitación... 148 00:15:28,900 --> 00:15:32,933 Pero a lo mejor salir de la habitación es muy complicado. Yo te digo: "No te entiendo" y entonces me tienes que decir: 149 00:15:32,933 --> 00:15:35,300 "Gira 90º a la derecha", 150 00:15:35,300 --> 00:15:41,566 "Avanza 3m", "Abre la puerta", "Cruza la puerta", 151 00:15:41,566 --> 00:15:44,666 "Gira a la derecha", "Baja las escaleras"... 152 00:15:44,666 --> 00:15:47,533 A lo mejor, bajar las escaleras es muy complicado. Tengo que decir: 153 00:15:47,533 --> 00:15:49,800 "Baja un escalón", ¿Hay otro escalón? 154 00:15:49,800 --> 00:15:52,199 Sí, "Baja el escalón", ¿Hay otro escalón? 155 00:15:52,200 --> 00:15:56,733 Sí, "Baja el escalón", ¿Hay otro escalón? Sí, "Baja el escalón", ¿Hay otro...? No 156 00:15:56,733 --> 00:15:57,966 Pues deja de bajar. 157 00:15:59,300 --> 00:16:05,266 Poco a poco, las órdenes que yo doy para que se ejecuten esas acciones,... 158 00:16:05,266 --> 00:16:10,666 esas órdenes es lo que constituye un programa. ¿Vale? 159 00:16:10,666 --> 00:16:12,400 Y claro, ya depende, 160 00:16:12,400 --> 00:16:15,933 ... imaginaros que yo soy el que tengo que ejecutar las acciones. 161 00:16:15,933 --> 00:16:21,833 Pero ahora imaginaros que yo no soy yo, que yo soy un yo alternativo chino. 162 00:16:22,666 --> 00:16:28,066 Si tu a mi me dices, "levántate de la silla", yo que soy chino, ¿qué hago?... 163 00:16:28,066 --> 00:16:30,866 --Voz de un alumno-- Pues no entenderlo. --Profe-- Pues no entenderlo. 164 00:16:30,866 --> 00:16:37,233 Por lo tanto. Mientras que el algoritmo es una secuencia de órdenes que valen para cualquier entorno: 165 00:16:37,233 --> 00:16:39,866 es un concepto, es una idea, 166 00:16:39,866 --> 00:16:46,500 el programa el programa es específico del sistema que estoy utilizando para ejecutar las acciones. 167 00:16:46,500 --> 00:16:49,766 Porque las órdenes tienen que ser específicas para ese sistema. 168 00:16:49,766 --> 00:16:55,100 Entonces, cuando yo estoy en un Crumble, tengo que mandarle las órdenes de una determinada forma, 169 00:16:55,100 --> 00:16:59,533 pero si estoy en un PC, tengo que decirle que las ejecute de otra forma. 170 00:16:59,533 --> 00:17:05,466 Y si lo que tengo es otro tipo de placa de control como un Arduino tengo que decírselo a través de otro lenguaje de programación. 171 00:17:05,466 --> 00:17:10,466 Entonces aquí es donde entran los lenguajes de programación. ¿Vale? 172 00:17:10,466 --> 00:17:14,666 Y ahí podemos ejecutar el mismo programa en diferentes lenguajes de programación. 173 00:17:14,666 --> 00:17:18,233 Porque, a veces, el que está en el otro lado es diferente. 174 00:17:18,233 --> 00:17:24,266 Entonces, un algoritmo es una secuencia ordenada de pasos que me lleva a solucionar un problema. 175 00:17:24,266 --> 00:17:28,700 Y es genérico. Me vale siempre. ¿Vale? 176 00:17:28,700 --> 00:17:31,266 Porque son los pasos en concepto. 177 00:17:32,633 --> 00:17:39,933 Cuanto más detallados hagamos los pasos, mejor. Cuanto menos complejo sea un paso. 178 00:17:39,933 --> 00:17:44,166 O sea, yo os he dicho antes: "Baja a la cocina", "Saca el café" y "Háztelo". 179 00:17:44,300 --> 00:17:51,233 Vale, Perfecto, he solucionado el problema, pero bajar a la cocina puede suponer un montón de pasos intermedios: 180 00:17:51,233 --> 00:17:54,800 "Levantate de la silla", "sal de la habitación", "Baja las escaleras"... 181 00:17:54,966 --> 00:17:59,066 Y además, cada uno de esos, a su vez, puede ser también una serie de pasos intermedios: 182 00:17:59,066 --> 00:18:01,666 El bajar las escaleras puede ser un bucle de 183 00:18:01,666 --> 00:18:06,800 "Mira a ver si hay un escalón" - "Bájalo", "Mira a ver si hay un escalón" ... hasta que deje de haber escalones. ¿Entendéis? 184 00:18:06,800 --> 00:18:12,266 Todo esto, es lo que yo voy a intentar reflejar con el mayor nivel de detalle posible en el algoritmo. 185 00:18:13,266 --> 00:18:16,266 Y si lo hago bien, si lo hago bien,... 186 00:18:17,933 --> 00:18:27,033 los lenguajes de programación me van a dar instrucciones, comandos y órdenes concretas... 187 00:18:27,033 --> 00:18:33,533 ... que van a casar, van a estar perfectamente relacionadas con lo que yo tengo que hacer. 188 00:18:33,533 --> 00:18:35,133 Habrá una orden en ... 189 00:18:35,133 --> 00:18:39,366 (imaginemos que estamos programando en C, ¿vale? en un lenguaje de programación que se llama C) 190 00:18:39,366 --> 00:18:45,600 Bueno, pues en C yo tengo una orden para levantarme de la silla, y yo la ejecuto. 191 00:18:46,033 --> 00:18:51,366 Tengo una orden para girarme un número de grados a derecha o izquierda, pues yo lo ejecuto. 192 00:18:51,366 --> 00:18:55,233 Tengo una orden para avanzar o parar. Yo lo ejecuto. 193 00:18:55,233 --> 00:19:01,833 Tengo una orden para mover una mano y abrir una puerta (ya está hecha la orden para esa...) pues, cojo y lo ejecuto. 194 00:19:01,833 --> 00:19:05,966 Si yo le digo "Sal de la habitación" no lo puedo traducir directamente, 195 00:19:05,966 --> 00:19:12,800 pero si le digo "levántate de la silla", "gira a la derecha 90 grados", "avanza 3 metros", "abre la puerta" y "avanza un metro más",... 196 00:19:13,166 --> 00:19:22,766 ahí ya puedo traducirlo directamente, prácticamente cada uno de los pasos, a una orden de mi lenguaje de programación, ¿vale? 197 00:19:22,766 --> 00:19:25,300 Eso es lo que diferencia un buen algoritmo de uno malo. 198 00:19:25,300 --> 00:19:29,566 La gente que programa, ¿que hace? Algoritmos. 199 00:19:29,733 --> 00:19:35,933 La gente que programa hace esto. Porque luego si lo hace bien, traducirlo es inmediato. 200 00:19:35,933 --> 00:19:38,400 Eso lo puede hacer cualquiera. 201 00:19:38,400 --> 00:19:43,633 Es decir, tengo que avanzar 3 metros, pues cojo la orden de mi lenguaje de programación (sea el que sea) 202 00:19:43,633 --> 00:19:46,200 que dice que avance 3 metros, y la ejecuto. 203 00:19:46,700 --> 00:19:49,233 Si tengo que girar a la derecha 90 grados, 204 00:19:49,233 --> 00:19:53,200 pues cojo la orden que me dice que puedo girar a derecha o a izquierda, ... 205 00:19:53,200 --> 00:19:56,633 la ejecuto, le digo que es a la derecha, y le digo que son 90 grados. 206 00:19:56,966 --> 00:20:00,266 Y ya, yo lo traduzco a cualquier lenguaje de programación, ... 207 00:20:00,266 --> 00:20:03,800 ... pero el algoritmo es el mismo, el proceso es el mismo.