1 00:00:02,160 --> 00:00:21,899 Bueno, en esta ocasión vamos a hablar de los principios básicos de programación. Más que nada es un repaso porque, bueno, pues vosotros en cursos anteriores ya habéis hecho algo de programación y esto pues probablemente ya os resulte familiar. 2 00:00:21,899 --> 00:00:34,130 pero por si acaso y para recordarlos pues vamos hemos hecho esta presentación el índice de la 3 00:00:34,130 --> 00:00:40,149 misma es el que podéis ver aquí vamos a empezar con una pequeña introducción después hablaremos 4 00:00:40,149 --> 00:00:47,090 de lo que son los diagramas de flujo que son las expresiones gráficas de los algoritmos y 5 00:00:47,090 --> 00:00:52,530 repasaremos las tres estructuras básicas algorítmicas y por lo tanto es de programación 6 00:00:52,530 --> 00:00:56,789 que vosotros vais a poder aplicar en vuestro co-space. 7 00:00:58,909 --> 00:01:01,829 Co-space, como veis, es muy parecido a Scratch, 8 00:01:03,049 --> 00:01:05,849 por lo menos en su versión simplificada, 9 00:01:06,150 --> 00:01:07,650 que es la que vamos a utilizar, 10 00:01:08,469 --> 00:01:11,790 lenguaje de programación orientado a objetos por bloques, 11 00:01:12,030 --> 00:01:13,629 entonces resulta bastante intuitivo. 12 00:01:14,310 --> 00:01:16,290 Pero por muy intuitivo que resulte, 13 00:01:16,290 --> 00:01:22,310 no está de más hacer un repaso de estos conocimientos 14 00:01:22,310 --> 00:01:29,530 que son los que tenéis que aplicar para hacer vuestro ejercicio. 15 00:01:32,319 --> 00:01:38,379 Bueno, comenzamos con que sabemos que estamos viviendo una época de cambio 16 00:01:38,379 --> 00:01:46,799 con este impulso de estas nuevas tecnologías que de alguna forma cada vez nos introducen herramientas nuevas 17 00:01:46,799 --> 00:02:09,819 que tenemos que aplicar, ya parece que el compartir contenido, hacer contenido no es suficiente, hay que también diseñar aplicaciones, hay que saber programar y entonces el hecho de fomentar las capacidades de programación 18 00:02:09,819 --> 00:02:21,840 desde edades tempranas, es un proyecto muy innovador y parece ser que es lo que se va a exigir a las próximas generaciones. 19 00:02:23,379 --> 00:02:32,479 Janet Wynne es la creadora del concepto de pensamiento computacional como una forma de resolución de problemas 20 00:02:32,479 --> 00:02:37,639 que utilizan los programadores pero que es aplicable a problemas de la vida real 21 00:02:37,639 --> 00:02:42,680 y evidentemente en este caso, como se trata además de programador, 22 00:02:42,840 --> 00:02:48,719 yo os aconsejo que utilicéis el pensamiento computacional para resolver vuestros problemas. 23 00:02:49,439 --> 00:02:54,800 Recordemos que las etapas del pensamiento computacional son descomposición del problema complejo 24 00:02:54,800 --> 00:03:02,240 en problemas sencillos, búsqueda de patrones, abstracción y creación de un algoritmo. 25 00:03:02,240 --> 00:03:11,620 Curiosamente, la creación de un algoritmo es la primera etapa de cualquier proceso de programación 26 00:03:11,620 --> 00:03:18,319 Cuando se crea un algoritmo, este algoritmo debe ser expresado mediante diagramas de flujo 27 00:03:18,319 --> 00:03:23,419 Y es utilizable en cualquier tipo de lenguaje de programación 28 00:03:23,419 --> 00:03:29,520 O sea, el algoritmo es la primera etapa de la programación, el diseño 29 00:03:29,520 --> 00:03:38,340 Y la segunda es compilar, es decir, pasar ese algoritmo a expresarle en los diferentes lenguajes de programación. 30 00:03:38,340 --> 00:03:56,560 Sabemos que los lenguajes de programación han ido evolucionando con el tiempo. Pasamos de lenguajes que prácticamente eran código binario a lenguajes que ya parecían unas primeras palabras. 31 00:03:56,560 --> 00:04:18,779 Después ya pasamos a lenguajes que no tenían nada que ver con el código binario como pueden ser el COBOL o el FORTRAN, pero que aún conservan el texto como el C++ o Python a los lenguajes que actualmente se utilizan, 32 00:04:18,779 --> 00:04:23,220 que prácticamente son todos lenguajes de programación de alto nivel 33 00:04:23,220 --> 00:04:28,939 y orientados a objetos, donde aparte puede haber interacción entre los objetos, 34 00:04:29,160 --> 00:04:32,860 pero también puede haber programación de los objetos de forma independiente. 35 00:04:34,740 --> 00:04:37,379 Una vez que nosotros tenemos compilado nuestro programa, 36 00:04:37,579 --> 00:04:41,759 hay que depurarle, hay que intentar simplificar 37 00:04:41,759 --> 00:04:49,399 y utilizar estructuras complejas de programación, funciones, etc. 38 00:04:50,279 --> 00:05:10,459 En cualquier caso, y para empezar por algo sencillo, y después esa sencillez se vaya complicando, las estructuras algorítmicas se pueden clasificar en tres grandes grupos, que son secuencial, ramificada e iterativa. 39 00:05:10,959 --> 00:05:19,899 Una estructura iterativa incluye una estructura ramificada y una ramificada a su vez tiene una estructura secuencial. 40 00:05:20,279 --> 00:05:25,439 Por ello, el orden de exposición es el que he citado. 41 00:05:25,740 --> 00:05:31,259 Primero la secuencial, después la ramificada y finalmente la iterativa. 42 00:05:32,480 --> 00:05:37,120 Bueno, ya sabemos que un algoritmo no es más que una secuencia ordenada de operaciones o tareas 43 00:05:37,120 --> 00:05:45,120 que es capaz de resolver un problema y que los algoritmos se expresan mediante diagrama de flujo. 44 00:05:46,519 --> 00:05:49,939 Pero, bueno, en cualquier algoritmo siempre lo que va a haber es una variable. 45 00:05:51,120 --> 00:06:00,139 Claro, la variable desde el punto de vista informático de programación no tiene el mismo significado que desde el punto de vista matemático. 46 00:06:00,879 --> 00:06:11,300 De hecho, cuando se quiere definir variables se utiliza la analogía de que una variable es como una especie de cajón al que le vamos a poner una etiqueta. 47 00:06:11,300 --> 00:06:14,920 Realmente es un trozo de la memoria de nuestro ordenador 48 00:06:14,920 --> 00:06:18,220 Una dirección de memoria de nuestro ordenador 49 00:06:18,220 --> 00:06:21,480 Con una determinada extensión y un determinado formato 50 00:06:21,480 --> 00:06:29,160 Entonces, pues, podemos poner dentro de ese formato, de ese trozo, de ese cajón 51 00:06:29,160 --> 00:06:30,699 Lo que nosotros queramos 52 00:06:30,699 --> 00:06:33,379 Podemos quitar, actualizar, etc. 53 00:06:35,199 --> 00:06:39,899 Variables, bueno, inicialmente podemos diferenciar dos grandes tipos 54 00:06:39,899 --> 00:06:45,620 que son las variables alfabéticas y las variables numéricas. 55 00:06:46,339 --> 00:06:50,100 También se habla de una combinación de ambas, de las variables alfanuméricas. 56 00:06:51,439 --> 00:06:55,839 Dentro de las variables numéricas a su vez podemos tener diferentes tipos. 57 00:06:56,560 --> 00:07:00,639 Hay variables binarias, es decir que pueden tener dos valores, 0 y 1. 58 00:07:01,660 --> 00:07:04,920 Hay variables que se pueden asociar con números enteros. 59 00:07:04,920 --> 00:07:14,920 Hay variables que se pueden asociar con números naturales y hay variables que se pueden asociar con números decimales o racionales. 60 00:07:16,160 --> 00:07:29,639 Entonces dependiendo del tipo de lenguaje de programación que estemos utilizando a la hora de tipificar nuestra variable tendremos que tener en cuenta que tipo de variables hay en este lenguaje de programación. 61 00:07:29,639 --> 00:07:34,459 En cualquier caso, si lo que vamos es a expresar un algoritmo 62 00:07:34,459 --> 00:07:40,240 Siempre vamos a utilizar los símbolos que aparecen a la izquierda de esta diapositiva 63 00:07:40,240 --> 00:07:42,579 Porque son símbolos normalizados 64 00:07:42,579 --> 00:07:46,360 Son símbolos que se utilizan en cualquier programa 65 00:07:46,360 --> 00:07:51,500 Uno, por ejemplo, se puede dedicar solo y exclusivamente a hacer diagramas de flujo 66 00:07:51,500 --> 00:07:55,500 Y otro, pues compilarlo cada uno en el lenguaje de programación que quiera 67 00:07:55,500 --> 00:08:02,540 pero mi algoritmo es entendible tanto por una persona que se experta en Python 68 00:08:02,540 --> 00:08:07,620 como para una persona que utilice por ejemplo Xamarin Scratch 69 00:08:07,620 --> 00:08:12,600 tiene que ser capaces de interpretar el algoritmo tanto la una como la otra 70 00:08:12,600 --> 00:08:19,959 entonces aquí he puesto los cinco símbolos que yo creo que son suficientes 71 00:08:19,959 --> 00:08:22,319 para crear nuestros algoritmos 72 00:08:22,319 --> 00:08:38,879 Tenemos el símbolo de inicio-fin, después tenemos el símbolo de tarea o acción, el símbolo de entrada por teclado, el símbolo de decisión y finalmente el símbolo de salida por pantalla. 73 00:08:38,879 --> 00:08:58,190 Pasamos así a ver la primera de las estructuras algorítmicas, que como vemos no es más que una secuencia de acciones en un orden determinado, primero esto, después esto, después esto, podría ser perfectamente una lista. 74 00:08:58,190 --> 00:09:04,750 Aún así, como es la estructura más sencilla 75 00:09:04,750 --> 00:09:10,309 Pues hay que sabérsela y hay que dominarla perfectamente 76 00:09:10,309 --> 00:09:13,850 Porque a partir de esta podemos irlo complicando 77 00:09:13,850 --> 00:09:16,230 Y podemos utilizar otro tipo de estructuras 78 00:09:16,230 --> 00:09:21,929 Entonces, siempre vamos a tener dos acciones típicas 79 00:09:21,929 --> 00:09:27,549 La primera es la de definir la variable, darle nombre a la variable 80 00:09:27,549 --> 00:09:35,769 y tipificar esa variable, no tienen por qué ser variables numéricas, una variable puede ser uno de los objetos 81 00:09:35,769 --> 00:09:45,730 que nosotros utilicemos en nuestros programas, ¿vale? y después hay que inicializarla, es decir, que inicializar 82 00:09:45,730 --> 00:09:52,690 podemos, como veremos aquí, para inicializar variables dependiendo del tipo de operación que vayamos a hacer 83 00:09:52,690 --> 00:10:03,370 Si son aritméticas de tipo sumar, restar, es mejor que se inicialice a cero y si son de tipo producto o división, que se inicialice a uno. 84 00:10:04,309 --> 00:10:11,730 Pero puede haber otros tipos de inicialización, ya que se posición, disfraz, en fin. 85 00:10:13,090 --> 00:10:21,590 El hecho es que hay una etapa en donde yo, de alguna forma, inicializo mi juego o mi programa. 86 00:10:22,690 --> 00:10:30,950 después pues lo que tenemos aquí es un ejemplo de suma de dos números 87 00:10:30,950 --> 00:10:37,090 entonces lo que vemos es que una vez que hemos caracterizado nuestras tres variables 88 00:10:37,090 --> 00:10:40,590 como integer y las hemos inicializado a cero 89 00:10:40,590 --> 00:10:45,289 pues lo que hacemos es meter atrás del teclado los dos números que queremos sumar 90 00:10:45,289 --> 00:10:52,330 realizamos esa acción de suma y sacamos la suma por la pantalla 91 00:10:52,330 --> 00:11:06,610 Es un programa muy sencillito, pero es un ejemplo que luego vosotros lo podéis aplicar a vuestro SkateRoom, a vuestros personajes. 92 00:11:08,450 --> 00:11:21,610 Cuando tenemos un algoritmo ramificado, siempre tiene que aparecer el símbolo de decisión en el algoritmo, porque en esa decisión nosotros vamos a meter una condición. 93 00:11:22,330 --> 00:11:27,250 Generalmente el resultado de la condición es se cumple o no se cumple, ¿vale? 94 00:11:27,250 --> 00:11:51,649 Claro, la forma como se ponen a meter las condiciones, pues es muy variada, se puede usar el símbolo mayor, menor, igual o desigual, se pueden utilizar, también se pueden hacer, se pueden unir varias condiciones con operaciones lógicas or o an, 95 00:11:51,649 --> 00:11:57,669 o bueno, hay múltiples formas de meter las condiciones. 96 00:11:57,970 --> 00:12:01,169 Depende un poco del lenguaje de programación que vais a utilizar. 97 00:12:02,230 --> 00:12:05,830 También depende un poco del lenguaje de programación que vayamos a utilizar. 98 00:12:06,669 --> 00:12:15,490 La compilación de este diagrama de flujo, pues generalmente siempre incluye la sentencia if. 99 00:12:15,490 --> 00:12:20,269 If condición, entonces si se cumple la condición se hace una serie de acciones 100 00:12:20,269 --> 00:12:44,870 Y si no, se suele utilizar el SE. Que hay veces que se puede utilizar, hay veces que no se tiene que utilizar. Si queremos anidar condiciones, podemos usar el SEIF. Que lo mismo, pues también depende un poco del lenguaje de programación. Esto es un poco, luego vosotros lo aplicáis como creáis conveniente. 101 00:12:44,870 --> 00:13:03,100 Y así pasamos a la última que son los algoritmos iterativos, en donde se realizan una serie de acciones en forma de bucle hasta que se cumple una determinada condición. 102 00:13:03,100 --> 00:13:06,440 Característica de este tipo de algoritmos 103 00:13:06,440 --> 00:13:09,480 Pues que aparezca una variable que se denomine contador 104 00:13:09,480 --> 00:13:20,600 Una variable contador que se va a actualizar en cada bucle 105 00:13:20,600 --> 00:13:23,899 Como contador igual a contador más paso 106 00:13:23,899 --> 00:13:27,000 Y que suele aparecer dentro de las condiciones 107 00:13:27,000 --> 00:13:29,059 En el condicional 108 00:13:29,059 --> 00:13:44,299 También, esto pues no es una cosa general, pero prácticamente este tipo de algoritmos se compila con FOR o con WHILE. 109 00:13:45,399 --> 00:13:54,600 Entonces, pues también depende un poco del lenguaje, ya eso ya depende de las características del lenguaje de programación, cómo lo compiléis y cómo se hace. 110 00:13:54,600 --> 00:13:57,759 en vuestro caso creo que existe 111 00:13:57,759 --> 00:13:59,379 el for siempre, el forever 112 00:13:59,379 --> 00:14:03,419 y el break 113 00:14:03,419 --> 00:14:05,639 también para salir un poco de los bucles 114 00:14:05,639 --> 00:14:07,759 que hay veces que entramos 115 00:14:07,759 --> 00:14:09,360 en lo que se llama un bucle sin fin 116 00:14:09,360 --> 00:14:11,700 y eso hay que romperlo de alguna 117 00:14:11,700 --> 00:14:13,700 manera, entonces para salir 118 00:14:13,700 --> 00:14:15,600 hay veces que para salir del bucle 119 00:14:15,600 --> 00:14:17,720 se emplea la sentencia break 120 00:14:17,720 --> 00:14:19,720 no es común, generalmente 121 00:14:19,720 --> 00:14:20,820 lo que se hace es una 122 00:14:20,820 --> 00:14:23,320 condición que se cumple para 123 00:14:23,320 --> 00:14:24,580 al final del bucle 124 00:14:24,600 --> 00:14:41,879 Y esto pues es un pequeño repaso de digamos conceptos más o menos básicos de programación que ahora vosotros pues los tendréis que utilizar para hacer vuestro trabajo. 125 00:14:41,879 --> 00:14:43,740 el escape room 126 00:14:43,740 --> 00:14:46,039 os voy a poner una lista de cotejo 127 00:14:46,039 --> 00:14:48,259 para que repaséis antes de enviar 128 00:14:48,259 --> 00:14:50,200 la tarea y también 129 00:14:50,200 --> 00:14:52,259 la rubrica, ya sabéis que lo vamos 130 00:14:52,259 --> 00:14:54,100 a evaluar en una exposición 131 00:14:54,100 --> 00:14:55,940 oral, vosotros vais a tener que 132 00:14:55,940 --> 00:14:58,200 hacer esa exposición y vamos a 133 00:14:58,200 --> 00:15:00,240 ver el código y vamos a 134 00:15:00,240 --> 00:15:02,360 utilizar 135 00:15:02,360 --> 00:15:04,019 la rubrica que también os voy a 136 00:15:04,019 --> 00:15:06,039 usar junto en este 137 00:15:06,039 --> 00:15:07,840 orden, pues 138 00:15:07,840 --> 00:15:09,980 espero que haya sido de utilidad 139 00:15:09,980 --> 00:15:11,220 y hasta la próxima