1 00:00:00,220 --> 00:00:05,960 Hola, muy buenas. En la clase de hoy os voy a pedir que diseñéis un algoritmo para el encendido de una serie de luces, 2 00:00:06,419 --> 00:00:15,259 en este caso de cinco LEDs, a semejanza de cómo lo hacen las luces navideñas o algunas luces que hemos visto en atracciones de ferias. 3 00:00:16,219 --> 00:00:22,899 Yo os voy a poner un ejemplo. En este las luces se encienden de izquierda a derecha y se apagan de derecha a izquierda 4 00:00:22,899 --> 00:00:30,719 y luego parpadean en una ocasión y se repite el ciclo, pero lo que pretendo en la clase de hoy es que diseñéis un algoritmo 5 00:00:30,719 --> 00:00:34,079 vuestro propio de encendido de estas cinco luces. 6 00:00:34,399 --> 00:00:37,920 Pero antes de nada vamos a recordar lo que son los algoritmos. 7 00:00:38,759 --> 00:00:45,240 Un algoritmo no es nada más que una secuencia ordenada de pasos que resuelve un problema en un tiempo finito. 8 00:00:45,240 --> 00:00:49,359 son ampliamente utilizados en el mundo de la programación 9 00:00:49,359 --> 00:00:53,039 ya que los ordenadores son máquinas poco inteligentes 10 00:00:53,039 --> 00:00:57,899 pero capaces de resolver muchísimos pasos sencillos en muy poco tiempo 11 00:00:57,899 --> 00:01:02,679 pero el algoritmo no es propio solamente del mundo de la programación 12 00:01:02,679 --> 00:01:05,560 sino que se encuentra en muchos otros ámbitos 13 00:01:05,560 --> 00:01:09,840 por ejemplo en las matemáticas hacemos uso constantemente de ellos 14 00:01:09,840 --> 00:01:14,719 por ejemplo en una multiplicación de dos números grandes 15 00:01:14,719 --> 00:01:23,299 326 por 24, aplicamos un algoritmo para obtener el resultado final. De tal manera que empezamos 16 00:01:23,299 --> 00:01:32,359 multiplicando el 4 por 326, poniendo el resultado en esta fila de aquí. Y a continuación multiplicaremos 17 00:01:32,359 --> 00:01:39,359 el 2 por 326, poniendo el resultado en la fila de abajo, pero desplazado una columna 18 00:01:39,359 --> 00:01:44,560 hacia la izquierda. Por último sumamos los dos resultados de las multiplicaciones anteriores. 19 00:01:44,719 --> 00:01:53,719 De esta manera hemos podido resolver un problema difícil, la multiplicación de dos números grandes, aplicando un sencillo algoritmo. 20 00:01:54,060 --> 00:02:00,939 Otro ejemplo serían las recetas, en las que seguimos una serie de pasos para conseguir un plato. 21 00:02:01,640 --> 00:02:08,000 Pero si te paras a pensar, de alguna manera no dejamos de aplicar algoritmos en nuestro día cotidiano. 22 00:02:08,000 --> 00:02:12,539 Para representar algoritmos existen varias técnicas 23 00:02:12,539 --> 00:02:17,300 Los más habituales son los diagramas de flujo y los pseudocódigos 24 00:02:17,300 --> 00:02:20,340 Vamos a ver los primeros 25 00:02:20,340 --> 00:02:26,300 Un diagrama de flujo, también conocido como flujograma o incluso organigrama 26 00:02:26,300 --> 00:02:31,620 No es nada más que una representación gráfica de los distintos pasos del algoritmo 27 00:02:31,620 --> 00:02:35,219 Y para ello empleamos una serie de elementos gráficos 28 00:02:35,219 --> 00:02:51,400 Para indicar el inicio y el fin del algoritmo utilizamos sendas elipses. A veces se escribe algo dentro y en otras ocasiones no se escribe nada. Pero todo algoritmo empieza con una elipse y acaba con una elipse. 29 00:02:51,400 --> 00:02:57,580 Para representar la entrada y salida de datos utilizamos romboides 30 00:02:57,580 --> 00:03:05,360 En el caso de las entradas con una flechita hacia adentro y en el caso de la salida con una flechita hacia afuera 31 00:03:05,360 --> 00:03:11,580 Para representar una tarea o un proceso del algoritmo utilizaremos un rectángulo 32 00:03:11,580 --> 00:03:18,039 Si es un proceso predefinido el rectángulo incluye dos líneas verticales como aparecen aquí 33 00:03:18,039 --> 00:03:22,939 Aunque para nosotros cualquiera de las dos serán equivalentes. 34 00:03:23,099 --> 00:03:31,520 En el caso de que nuestro algoritmo pueda tener dos vías de ejecución en función de una condición, utilizamos los rombos. 35 00:03:31,840 --> 00:03:43,800 Dependiendo del resultado de una pregunta que nos hagamos, se irá por un camino, en el caso de ser falsa la respuesta en este caso, u otro camino en el caso de ser verdadero. 36 00:03:43,800 --> 00:03:50,800 Y por último, todos estos elementos están unidos mediante flechas que representan la línea de flujo de nuestro algoritmo. 37 00:03:52,000 --> 00:03:56,240 Otra manera de representar algoritmos es mediante pseudocódigo. 38 00:03:56,819 --> 00:04:03,860 La palabra pseudocódigo está formada de pseudo, que significa falso, y código, programa. 39 00:04:04,740 --> 00:04:12,400 Esto es así porque utilizamos un lenguaje con algunas semejanzas a los lenguajes de programación de alto nivel, 40 00:04:12,400 --> 00:04:16,579 pero más cercana al lenguaje natural que utilizamos las personas. 41 00:04:16,899 --> 00:04:22,480 Algunas cosas que tenemos que tener en cuenta a la hora de crear o interpretar un pseudocódigo 42 00:04:22,480 --> 00:04:28,279 es que las asignaciones se suelen representar con flechitas tal como aparecen aquí. 43 00:04:28,839 --> 00:04:35,500 Esto, por ejemplo, querría decir que a nuestra variable x le ponemos el valor que tenga la variable y. 44 00:04:36,100 --> 00:04:40,199 Si queremos representar estructuras selectivas con pseudocódigo, 45 00:04:40,199 --> 00:04:47,199 podemos hacerlo de la manera que aquí se indica. A la derecha aparecería su equivalencia en un flujograma. 46 00:04:47,879 --> 00:04:53,220 Para representar los bucles con pseudocódigo podemos utilizar estructuras del tipo 47 00:04:53,220 --> 00:04:57,199 mientras se cumple una condición se hace lo que tengamos entre medias. 48 00:04:57,899 --> 00:05:01,879 Su equivalencia en un flujograma aparecería aquí a la derecha. 49 00:05:02,980 --> 00:05:06,259 Pero bueno, para entender esto es mejor emplear un ejemplo. 50 00:05:06,259 --> 00:05:10,439 Vamos a ver el algoritmo que seguiríamos para tener nuestra hamburguesa 51 00:05:10,439 --> 00:05:12,800 Empezamos con el flujograma 52 00:05:12,800 --> 00:05:17,160 Ahí indicamos que se va a empezar nuestro algoritmo de hamburguesa 53 00:05:17,160 --> 00:05:20,439 A continuación tenemos una caja que indica un proceso 54 00:05:20,439 --> 00:05:24,720 Ese proceso no es otra cosa que poner la base del pan 55 00:05:24,720 --> 00:05:27,620 A continuación freímos la carne 56 00:05:27,620 --> 00:05:32,620 Y lo vamos a estar haciendo mientras que la carne no esté lo suficientemente hecha 57 00:05:32,620 --> 00:05:35,220 Por eso en este rombo preguntamos si la carne está hecha 58 00:05:35,220 --> 00:05:42,259 ¿Está hecha la carne? ¿Verdadero? Pues entonces echamos ya la carne encima del pan, etcétera, etcétera 59 00:05:42,259 --> 00:05:45,860 ¿Qué no? Pues volvemos aquí arriba, volvemos a freír la carne 60 00:05:45,860 --> 00:05:53,819 Bueno, una vez que esté bien hecha la carne, echamos la carne encima del pan, cortamos una loncha de queso 61 00:05:53,819 --> 00:06:04,139 Añadimos el queso a la hamburguesa, cortamos el tomate, lo echamos a la hamburguesa, cortamos la lechuga, la echamos 62 00:06:04,139 --> 00:06:17,139 Y aquí en nuestra hamburguesa preguntamos si quiere mostaza. Si el resultado es verdadero, echaríamos mostaza. Si el resultado es falso, echaríamos ketchup. 63 00:06:17,720 --> 00:06:24,980 Si es verdad que en otras hamburguesas se pueden echar las dos cosas, pero bueno, esta es nuestra hamburguesa, es el algoritmo de nuestra hamburguesa. 64 00:06:25,680 --> 00:06:34,899 Por último, pondríamos la tapa del pan y se ha acabado la receta de mi hamburguesa, se ha acabado el algoritmo que crea la hamburguesa. 65 00:06:35,459 --> 00:06:39,579 El mismo algoritmo lo podemos representar con pseudolenguaje o pseudocódigo. 66 00:06:40,079 --> 00:06:49,720 Empezaríamos nuestro algoritmo hamburguesa, pondríamos el pan, podemos utilizar una estructura de repetir, repetir, freír carne hasta que esté la carne hecha. 67 00:06:49,720 --> 00:06:57,139 Luego echaríamos la carne, cortaríamos el queso, añadiríamos el queso, cortamos el tomate, echamos el tomate, cortamos la lechuga, echamos la lechuga 68 00:06:57,139 --> 00:07:00,600 Una vez llegado aquí, preguntamos, ¿se quiere mostaza? 69 00:07:01,660 --> 00:07:04,420 Si se quiere mostaza, entonces echamos mostaza 70 00:07:04,420 --> 00:07:06,300 Si no, echamos ketchup 71 00:07:06,300 --> 00:07:09,100 Y por último ponemos la tapa del pan 72 00:07:09,100 --> 00:07:10,439 Y se acaba nuestro algoritmo 73 00:07:10,439 --> 00:07:13,660 Vemos que las dos representaciones son totalmente equivalentes 74 00:07:13,660 --> 00:07:18,480 En nuestro ejemplo de las luces se tienen varios algoritmos 75 00:07:18,480 --> 00:07:31,180 Por ejemplo, en el algoritmo principal declararíamos una variable que la he llamado espera, a la que le asigno 200 milisegundos y luego llamaríamos a tres procesos. 76 00:07:31,519 --> 00:07:47,439 El proceso secuencia 1 es el que me va encendiendo las luces de izquierda a derecha, el proceso secuencia 2 que es el que va apagando las luces de derecha a izquierda y por último el proceso secuencia 3 que lo que hace es un parpadeo de todas las luces a la vez. 77 00:07:47,439 --> 00:07:53,879 A su vez, podemos representar los algoritmos de cada uno de estos procesos. 78 00:07:54,019 --> 00:07:58,540 Por ejemplo, el algoritmo de la secuencia 1 quedaría de la siguiente manera. 79 00:07:59,180 --> 00:08:01,079 Vamos a verlo con el pseudocódigo. 80 00:08:01,800 --> 00:08:07,439 En este caso se trata de una función, secuencia 1, que emite un parámetro, lapso. 81 00:08:09,000 --> 00:08:11,079 Lo primero que hacemos es apagar todos los LEDs. 82 00:08:11,079 --> 00:08:16,800 A continuación esperamos un tiempo, el tiempo de nuestro parámetro. 83 00:08:17,439 --> 00:08:29,100 Luego encendemos el LED 1, esperamos un tiempo, encendemos el 2, esperamos un tiempo, encendemos el 3 y así sucesivamente hasta acabar con todas las luces. 84 00:08:29,779 --> 00:08:44,460 Por su parte, el algoritmo de la secuencia 2, encendemos todos los LEDs, apagamos el LED 1, esperamos, apagamos el LED 2 y así sucesivamente. 85 00:08:44,460 --> 00:08:56,759 Y por último, el algoritmo de la secuencia 3, lo que haríamos es que apagamos todos, esperamos un tiempo, encendemos todos y esperamos un tiempo. 86 00:08:57,440 --> 00:09:05,740 Una vez que tengamos los algoritmos, ya resulta relativamente sencillo pasar a un lenguaje de programación que entienda el ordenador. 87 00:09:06,519 --> 00:09:08,580 Pero eso ya lo veremos en otra clase. 88 00:09:08,580 --> 00:09:18,100 Ahora os dejo que penséis en vuestros algoritmos para encender o apagar las luces de una manera distinta a la que yo lo he hecho 89 00:09:18,100 --> 00:09:23,440 Venga, ánimo, seguro que conseguís resultados muy interesantes